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 ) );