Add option 'delay_ccs' to udp_proxy
diff --git a/programs/test/udp_proxy.c b/programs/test/udp_proxy.c
index b2b71fa..baf8f4f 100644
--- a/programs/test/udp_proxy.c
+++ b/programs/test/udp_proxy.c
@@ -85,6 +85,7 @@
" duplicate 1 packet every N packets\n" \
" delay=%%d default: 0 (no delayed packets)\n" \
" delay 1 packet every N packets\n" \
+ " delay_ccs=%%d default: 0 (don't delay ChangeCipherSuite)\n" \
" drop=%%d default: 0 (no dropped packets)\n" \
" drop 1 packet every N packets\n" \
"\n"
@@ -101,6 +102,7 @@
int duplicate; /* duplicate 1 in N packets (none if 0) */
int delay; /* delay 1 packet in N (none if 0) */
+ int delay_ccs; /* delay ChangeCipherSpec */
int drop; /* drop 1 packet in N (none if 0) */
} opt;
@@ -183,6 +185,12 @@
if( opt.delay < 0 || opt.delay > 10 || opt.delay == 1 )
exit_usage( p, q );
}
+ else if( strcmp( p, "delay_ccs" ) == 0 )
+ {
+ opt.delay_ccs = atoi( q );
+ if( opt.delay_ccs < 0 || opt.delay_ccs > 1 )
+ exit_usage( p, q );
+ }
else if( strcmp( p, "drop" ) == 0 )
{
opt.drop = atoi( q );
@@ -301,9 +309,11 @@
{
drop_cnt = 0;
}
- else if( opt.delay != 0 &&
- strcmp( cur.type, "ApplicationData" ) != 0 &&
- ++delay_cnt == opt.delay )
+ else if( ( opt.delay_ccs == 1 &&
+ strcmp( cur.type, "ChangeCipherSpec" ) == 0 ) ||
+ ( opt.delay != 0 &&
+ strcmp( cur.type, "ApplicationData" ) != 0 &&
+ ++delay_cnt == opt.delay ) )
{
delay_cnt = 0;
memcpy( &prev, &cur, sizeof( packet ) );