gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r6684 - in libmicrohttpd: . src/daemon src/testcurl src/tes


From: gnunet
Subject: [GNUnet-SVN] r6684 - in libmicrohttpd: . src/daemon src/testcurl src/testzzuf
Date: Sat, 12 Apr 2008 20:54:58 -0600 (MDT)

Author: grothoff
Date: 2008-04-12 20:54:58 -0600 (Sat, 12 Apr 2008)
New Revision: 6684

Modified:
   libmicrohttpd/ChangeLog
   libmicrohttpd/src/daemon/connection.c
   libmicrohttpd/src/testcurl/daemontest_get_chunked.c
   libmicrohttpd/src/testcurl/daemontest_long_header.c
   libmicrohttpd/src/testzzuf/daemontest_get.c
   libmicrohttpd/src/testzzuf/daemontest_get_chunked.c
   libmicrohttpd/src/testzzuf/daemontest_large_put.c
   libmicrohttpd/src/testzzuf/socat.c
Log:
formatting

Modified: libmicrohttpd/ChangeLog
===================================================================
--- libmicrohttpd/ChangeLog     2008-04-13 02:41:51 UTC (rev 6683)
+++ libmicrohttpd/ChangeLog     2008-04-13 02:54:58 UTC (rev 6684)
@@ -9,6 +9,8 @@
         errors (such as request too large and malformed requests).
         Without that flag, the webpages returned will still be
         empty.
+        Added zzuf-based fuzzing-testcases (these require the
+        zzuf and socat binaries to be installed).
 
 Fri Apr 11 20:20:34 MDT 2008
         I hereby dub libmicrohttpd a GNU package. -Richard Stallman

Modified: libmicrohttpd/src/daemon/connection.c
===================================================================
--- libmicrohttpd/src/daemon/connection.c       2008-04-13 02:41:51 UTC (rev 
6683)
+++ libmicrohttpd/src/daemon/connection.c       2008-04-13 02:54:58 UTC (rev 
6684)
@@ -563,8 +563,7 @@
  */
 static void
 transmit_error_response (struct MHD_Connection *connection,
-                        unsigned int status_code,
-                        const char * message)
+                         unsigned int status_code, const char *message)
 {
   struct MHD_Response *response;
 
@@ -574,11 +573,10 @@
 #if HAVE_MESSAGES
   MHD_DLOG (connection->daemon,
             "Error %u (`%s') processing request, closing connection.\n",
-           status_code,
-           message);
+            status_code, message);
 #endif
   response = MHD_create_response_from_data (strlen (message),
-                                            (void*)message, MHD_NO, MHD_NO);
+                                            (void *) message, MHD_NO, MHD_NO);
   MHD_queue_response (connection, status_code, response);
   EXTRA_CHECK (connection->response != NULL);
   MHD_destroy_response (response);
@@ -657,10 +655,10 @@
               && (MHD_NO == try_grow_read_buffer (connection)))
             {
               transmit_error_response (connection,
-                                      (connection->url != NULL)
-                                      ? MHD_HTTP_REQUEST_ENTITY_TOO_LARGE
-                                      : MHD_HTTP_REQUEST_URI_TOO_LONG,
-                                      REQUEST_TOO_BIG);
+                                       (connection->url != NULL)
+                                       ? MHD_HTTP_REQUEST_ENTITY_TOO_LARGE
+                                       : MHD_HTTP_REQUEST_URI_TOO_LONG,
+                                       REQUEST_TOO_BIG);
               continue;
             }
           if (MHD_NO == connection->read_closed)
@@ -774,10 +772,10 @@
           if (rbuf == NULL)
             {
               transmit_error_response (connection,
-                                      (connection->url != NULL)
-                                      ? MHD_HTTP_REQUEST_ENTITY_TOO_LARGE
-                                      : MHD_HTTP_REQUEST_URI_TOO_LONG,
-                                      REQUEST_TOO_BIG);
+                                       (connection->url != NULL)
+                                       ? MHD_HTTP_REQUEST_ENTITY_TOO_LARGE
+                                       : MHD_HTTP_REQUEST_URI_TOO_LONG,
+                                       REQUEST_TOO_BIG);
             }
           else
             {
@@ -816,7 +814,7 @@
                 "Not enough memory to allocate header record!\n");
 #endif
       transmit_error_response (connection, MHD_HTTP_REQUEST_ENTITY_TOO_LARGE,
-                              REQUEST_TOO_BIG);
+                               REQUEST_TOO_BIG);
       return MHD_NO;
     }
   hdr->next = connection->headers_received;
@@ -884,7 +882,7 @@
       MHD_DLOG (connection->daemon, "Not enough memory to parse cookies!\n");
 #endif
       transmit_error_response (connection, MHD_HTTP_REQUEST_ENTITY_TOO_LARGE,
-                              REQUEST_TOO_BIG);
+                               REQUEST_TOO_BIG);
       return MHD_NO;
     }
   memcpy (cpy, hdr, strlen (hdr) + 1);
@@ -1240,8 +1238,8 @@
       if (last == NULL)
         {
           transmit_error_response (connection,
-                                  MHD_HTTP_REQUEST_ENTITY_TOO_LARGE,
-                                  REQUEST_TOO_BIG);
+                                   MHD_HTTP_REQUEST_ENTITY_TOO_LARGE,
+                                   REQUEST_TOO_BIG);
           return MHD_NO;
         }
       tmp = line;
@@ -1251,24 +1249,23 @@
       connection->last = last;
       return MHD_YES;           /* possibly more than 2 lines... */
     }
-  EXTRA_CHECK ( (last != NULL) && (connection->colon != NULL) );
-  if ( (MHD_NO == connection_add_header (connection,
-                                        last, connection->colon, kind)) )
+  EXTRA_CHECK ((last != NULL) && (connection->colon != NULL));
+  if ((MHD_NO == connection_add_header (connection,
+                                        last, connection->colon, kind)))
     {
       transmit_error_response (connection, MHD_HTTP_REQUEST_ENTITY_TOO_LARGE,
-                              REQUEST_TOO_BIG);
+                               REQUEST_TOO_BIG);
       return MHD_NO;
     }
   /* we still have the current line to deal with... */
   if (strlen (line) != 0)
     {
       if (MHD_NO == process_header_line (connection, line))
-       {
-         transmit_error_response(connection,
-                                 MHD_HTTP_BAD_REQUEST,
-                                 REQUEST_MALFORMED);
-         return MHD_NO;
-       }
+        {
+          transmit_error_response (connection,
+                                   MHD_HTTP_BAD_REQUEST, REQUEST_MALFORMED);
+          return MHD_NO;
+        }
     }
   return MHD_YES;
 }
@@ -1638,16 +1635,16 @@
         case MHD_CONNECTION_INIT:
           line = get_next_header_line (connection);
           if (line == NULL)
-           {
-             if (connection->state != MHD_CONNECTION_INIT)
-               continue;
-             if (connection->read_closed)
-               {
-                 connection->state = MHD_CONNECTION_CLOSED;
-                 continue;
-               }
-             break;
-           }
+            {
+              if (connection->state != MHD_CONNECTION_INIT)
+                continue;
+              if (connection->read_closed)
+                {
+                  connection->state = MHD_CONNECTION_CLOSED;
+                  continue;
+                }
+              break;
+            }
           if (MHD_NO == parse_initial_message_line (connection, line))
             connection->state = MHD_CONNECTION_CLOSED;
           else
@@ -1656,46 +1653,46 @@
         case MHD_CONNECTION_URL_RECEIVED:
           line = get_next_header_line (connection);
           if (line == NULL)
-           {
-             if (connection->state != MHD_CONNECTION_URL_RECEIVED)
-               continue;
-             if (connection->read_closed)
-               {
-                 connection->state = MHD_CONNECTION_CLOSED;
-                 continue;
-               }
-             break;
-           }
+            {
+              if (connection->state != MHD_CONNECTION_URL_RECEIVED)
+                continue;
+              if (connection->read_closed)
+                {
+                  connection->state = MHD_CONNECTION_CLOSED;
+                  continue;
+                }
+              break;
+            }
           if (strlen (line) == 0)
             {
               connection->state = MHD_CONNECTION_HEADERS_RECEIVED;
               continue;
             }
           if (MHD_NO == process_header_line (connection, line))
-           {
-             transmit_error_response(connection,
-                                     MHD_HTTP_BAD_REQUEST,
-                                     REQUEST_MALFORMED);
-             break;
-           }
+            {
+              transmit_error_response (connection,
+                                       MHD_HTTP_BAD_REQUEST,
+                                       REQUEST_MALFORMED);
+              break;
+            }
           connection->state = MHD_CONNECTION_HEADER_PART_RECEIVED;
           continue;
         case MHD_CONNECTION_HEADER_PART_RECEIVED:
           line = get_next_header_line (connection);
           if (line == NULL)
-           {
-             if (connection->state != MHD_CONNECTION_HEADER_PART_RECEIVED)
-               continue;
-             if (connection->read_closed)
-               {
-                 connection->state = MHD_CONNECTION_CLOSED;
-                 continue;
-               }
-             break;
-           }
-          if (MHD_NO == 
-             process_broken_line (connection, line, MHD_HEADER_KIND))
-           continue;       
+            {
+              if (connection->state != MHD_CONNECTION_HEADER_PART_RECEIVED)
+                continue;
+              if (connection->read_closed)
+                {
+                  connection->state = MHD_CONNECTION_CLOSED;
+                  continue;
+                }
+              break;
+            }
+          if (MHD_NO ==
+              process_broken_line (connection, line, MHD_HEADER_KIND))
+            continue;
           if (strlen (line) == 0)
             {
               connection->state = MHD_CONNECTION_HEADERS_RECEIVED;
@@ -1751,46 +1748,46 @@
         case MHD_CONNECTION_BODY_RECEIVED:
           line = get_next_header_line (connection);
           if (line == NULL)
-           {
-             if (connection->state != MHD_CONNECTION_BODY_RECEIVED)
-               continue;
-             if (connection->read_closed)
-               {
-                 connection->state = MHD_CONNECTION_CLOSED;
-                 continue;
-               }
-             break;
-           }
+            {
+              if (connection->state != MHD_CONNECTION_BODY_RECEIVED)
+                continue;
+              if (connection->read_closed)
+                {
+                  connection->state = MHD_CONNECTION_CLOSED;
+                  continue;
+                }
+              break;
+            }
           if (strlen (line) == 0)
             {
               connection->state = MHD_CONNECTION_FOOTERS_RECEIVED;
               continue;
             }
           if (MHD_NO == process_header_line (connection, line))
-           {
-             transmit_error_response(connection,
-                                     MHD_HTTP_BAD_REQUEST,
-                                     REQUEST_MALFORMED);
-             break;
-           }
+            {
+              transmit_error_response (connection,
+                                       MHD_HTTP_BAD_REQUEST,
+                                       REQUEST_MALFORMED);
+              break;
+            }
           connection->state = MHD_CONNECTION_FOOTER_PART_RECEIVED;
           continue;
         case MHD_CONNECTION_FOOTER_PART_RECEIVED:
           line = get_next_header_line (connection);
           if (line == NULL)
-           {
-             if (connection->state != MHD_CONNECTION_FOOTER_PART_RECEIVED)
-               continue;
-             if (connection->read_closed)
-               {
-                 connection->state = MHD_CONNECTION_CLOSED;
-                 continue;
-               }
-             break;
-           }
-          if (MHD_NO == 
-             process_broken_line (connection, line, MHD_FOOTER_KIND))
-           continue;
+            {
+              if (connection->state != MHD_CONNECTION_FOOTER_PART_RECEIVED)
+                continue;
+              if (connection->read_closed)
+                {
+                  connection->state = MHD_CONNECTION_CLOSED;
+                  continue;
+                }
+              break;
+            }
+          if (MHD_NO ==
+              process_broken_line (connection, line, MHD_FOOTER_KIND))
+            continue;
           if (strlen (line) == 0)
             {
               connection->state = MHD_CONNECTION_FOOTERS_RECEIVED;

Modified: libmicrohttpd/src/testcurl/daemontest_get_chunked.c
===================================================================
--- libmicrohttpd/src/testcurl/daemontest_get_chunked.c 2008-04-13 02:41:51 UTC 
(rev 6683)
+++ libmicrohttpd/src/testcurl/daemontest_get_chunked.c 2008-04-13 02:54:58 UTC 
(rev 6684)
@@ -353,7 +353,7 @@
     return 2;
   errorCount += testInternalGet ();
   errorCount += testMultithreadedGet ();
-  errorCount += testExternalGet ();   
+  errorCount += testExternalGet ();
   if (errorCount != 0)
     fprintf (stderr, "Error (code: %u)\n", errorCount);
   curl_global_cleanup ();

Modified: libmicrohttpd/src/testcurl/daemontest_long_header.c
===================================================================
--- libmicrohttpd/src/testcurl/daemontest_long_header.c 2008-04-13 02:41:51 UTC 
(rev 6683)
+++ libmicrohttpd/src/testcurl/daemontest_long_header.c 2008-04-13 02:54:58 UTC 
(rev 6684)
@@ -99,7 +99,7 @@
   cbc.buf = buf;
   cbc.size = 2048;
   cbc.pos = 0;
-  d = MHD_start_daemon (MHD_USE_SELECT_INTERNALLY /* | MHD_USE_DEBUG */,
+  d = MHD_start_daemon (MHD_USE_SELECT_INTERNALLY /* | MHD_USE_DEBUG */ ,
                         1080,
                         &apc_all,
                         NULL,
@@ -219,7 +219,7 @@
   MHD_stop_daemon (d);
   free (url);
   if (code != MHD_HTTP_REQUEST_ENTITY_TOO_LARGE)
-    return 128;    
+    return 128;
   return 0;
 }
 

Modified: libmicrohttpd/src/testzzuf/daemontest_get.c
===================================================================
--- libmicrohttpd/src/testzzuf/daemontest_get.c 2008-04-13 02:41:51 UTC (rev 
6683)
+++ libmicrohttpd/src/testzzuf/daemontest_get.c 2008-04-13 02:54:58 UTC (rev 
6684)
@@ -112,33 +112,34 @@
   cbc.buf = buf;
   cbc.size = 2048;
   cbc.pos = 0;
-  d = MHD_start_daemon (MHD_USE_SELECT_INTERNALLY /* | MHD_USE_DEBUG */,
+  d = MHD_start_daemon (MHD_USE_SELECT_INTERNALLY /* | MHD_USE_DEBUG */ ,
                         11080, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
   if (d == NULL)
     return 1;
-  zzuf_socat_start();
-  for (i=0;i<LOOP_COUNT;i++) {
-    fprintf(stderr, ".");
-    c = curl_easy_init ();
-    curl_easy_setopt (c, CURLOPT_URL, "http://localhost:11081/hello_world";);
-    curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, &copyBuffer);
-    curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
-    curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
-    curl_easy_setopt (c, CURLOPT_TIMEOUT_MS, CURL_TIMEOUT);
-    curl_easy_setopt (c, CURLOPT_CONNECTTIMEOUT_MS, CURL_TIMEOUT);
-    if (oneone)
-      curl_easy_setopt (c, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
-    else
-      curl_easy_setopt (c, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
-    // NOTE: use of CONNECTTIMEOUT without also
-    //   setting NOSIGNAL results in really weird
-    //   crashes on my system!
-    curl_easy_setopt (c, CURLOPT_NOSIGNAL, 1);
-    curl_easy_perform (c);
-    curl_easy_cleanup (c);
-  }
-  fprintf(stderr, "\n");
-  zzuf_socat_stop();
+  zzuf_socat_start ();
+  for (i = 0; i < LOOP_COUNT; i++)
+    {
+      fprintf (stderr, ".");
+      c = curl_easy_init ();
+      curl_easy_setopt (c, CURLOPT_URL, "http://localhost:11081/hello_world";);
+      curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, &copyBuffer);
+      curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
+      curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
+      curl_easy_setopt (c, CURLOPT_TIMEOUT_MS, CURL_TIMEOUT);
+      curl_easy_setopt (c, CURLOPT_CONNECTTIMEOUT_MS, CURL_TIMEOUT);
+      if (oneone)
+        curl_easy_setopt (c, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
+      else
+        curl_easy_setopt (c, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
+      // NOTE: use of CONNECTTIMEOUT without also
+      //   setting NOSIGNAL results in really weird
+      //   crashes on my system!
+      curl_easy_setopt (c, CURLOPT_NOSIGNAL, 1);
+      curl_easy_perform (c);
+      curl_easy_cleanup (c);
+    }
+  fprintf (stderr, "\n");
+  zzuf_socat_stop ();
   MHD_stop_daemon (d);
   return 0;
 }
@@ -155,33 +156,34 @@
   cbc.buf = buf;
   cbc.size = 2048;
   cbc.pos = 0;
-  d = MHD_start_daemon (MHD_USE_THREAD_PER_CONNECTION /* | MHD_USE_DEBUG */,
+  d = MHD_start_daemon (MHD_USE_THREAD_PER_CONNECTION /* | MHD_USE_DEBUG */ ,
                         11080, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
   if (d == NULL)
     return 16;
-  zzuf_socat_start();
-  for (i=0;i<LOOP_COUNT;i++) {
-    fprintf(stderr, ".");
-    c = curl_easy_init ();
-    curl_easy_setopt (c, CURLOPT_URL, "http://localhost:11081/hello_world";);
-    curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, &copyBuffer);
-    curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
-    curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
-    curl_easy_setopt (c, CURLOPT_TIMEOUT_MS, CURL_TIMEOUT);
-    if (oneone)
-      curl_easy_setopt (c, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
-    else
-      curl_easy_setopt (c, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
-    curl_easy_setopt (c, CURLOPT_CONNECTTIMEOUT_MS, CURL_TIMEOUT);
-    // NOTE: use of CONNECTTIMEOUT without also
-    //   setting NOSIGNAL results in really weird
-    //   crashes on my system!
-    curl_easy_setopt (c, CURLOPT_NOSIGNAL, 1);
-    curl_easy_perform (c);
-    curl_easy_cleanup (c);
-  }
-  fprintf(stderr, "\n");
-  zzuf_socat_stop();
+  zzuf_socat_start ();
+  for (i = 0; i < LOOP_COUNT; i++)
+    {
+      fprintf (stderr, ".");
+      c = curl_easy_init ();
+      curl_easy_setopt (c, CURLOPT_URL, "http://localhost:11081/hello_world";);
+      curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, &copyBuffer);
+      curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
+      curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
+      curl_easy_setopt (c, CURLOPT_TIMEOUT_MS, CURL_TIMEOUT);
+      if (oneone)
+        curl_easy_setopt (c, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
+      else
+        curl_easy_setopt (c, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
+      curl_easy_setopt (c, CURLOPT_CONNECTTIMEOUT_MS, CURL_TIMEOUT);
+      // NOTE: use of CONNECTTIMEOUT without also
+      //   setting NOSIGNAL results in really weird
+      //   crashes on my system!
+      curl_easy_setopt (c, CURLOPT_NOSIGNAL, 1);
+      curl_easy_perform (c);
+      curl_easy_cleanup (c);
+    }
+  fprintf (stderr, "\n");
+  zzuf_socat_stop ();
   MHD_stop_daemon (d);
   return 0;
 }
@@ -209,7 +211,7 @@
   cbc.buf = buf;
   cbc.size = 2048;
   cbc.pos = 0;
-  d = MHD_start_daemon (MHD_NO_FLAG /* | MHD_USE_DEBUG*/,
+  d = MHD_start_daemon (MHD_NO_FLAG /* | MHD_USE_DEBUG */ ,
                         11080, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
   if (d == NULL)
     return 256;
@@ -220,82 +222,83 @@
       MHD_stop_daemon (d);
       return 512;
     }
-  zzuf_socat_start();
-  for (i=0;i<LOOP_COUNT;i++) {
-    fprintf(stderr, ".");
-    c = curl_easy_init ();
-    curl_easy_setopt (c, CURLOPT_URL, "http://localhost:11081/hello_world";);
-    curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, &copyBuffer);
-    curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
-    curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
-    if (oneone)
-      curl_easy_setopt (c, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
-    else
-      curl_easy_setopt (c, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
-    curl_easy_setopt (c, CURLOPT_TIMEOUT_MS, CURL_TIMEOUT);
-    curl_easy_setopt (c, CURLOPT_CONNECTTIMEOUT_MS, CURL_TIMEOUT);
-    // NOTE: use of CONNECTTIMEOUT without also
-    //   setting NOSIGNAL results in really weird
-    //   crashes on my system!
-    curl_easy_setopt (c, CURLOPT_NOSIGNAL, 1);
-    mret = curl_multi_add_handle (multi, c);
-    if (mret != CURLM_OK)
-      {
-       curl_multi_cleanup (multi);
-       curl_easy_cleanup (c);
-       zzuf_socat_stop();
-       MHD_stop_daemon (d);
-       return 1024;
-      }
-    start = time (NULL);
-    while ((time (NULL) - start < 5) && (c != NULL))
-      {
-       max = 0;
-       FD_ZERO (&rs);
-       FD_ZERO (&ws);
-       FD_ZERO (&es);
-       curl_multi_perform (multi, &running);
-       mret = curl_multi_fdset (multi, &rs, &ws, &es, &max);
-       if (mret != CURLM_OK)
-         {
-           curl_multi_remove_handle (multi, c);
-           curl_multi_cleanup (multi);
-           curl_easy_cleanup (c);
-           zzuf_socat_stop();
-           MHD_stop_daemon (d);
-           return 2048;
-         }
-       if (MHD_YES != MHD_get_fdset (d, &rs, &ws, &es, &max))
-         {
-           curl_multi_remove_handle (multi, c);
-           curl_multi_cleanup (multi);
-           curl_easy_cleanup (c);
-           zzuf_socat_stop();
-           MHD_stop_daemon (d);
-           return 4096;
-         }
-       tv.tv_sec = 0;
-       tv.tv_usec = 1000;
-       select (max + 1, &rs, &ws, &es, &tv);
-       curl_multi_perform (multi, &running);
-       if (running == 0)
-         {
-           curl_multi_info_read (multi, &running);
-           curl_multi_remove_handle (multi, c);
-           curl_easy_cleanup (c);
-           c = NULL;
-         }
-       MHD_run (d);
-      }
-    if (c != NULL)
-      {
-       curl_multi_remove_handle (multi, c);
-       curl_easy_cleanup (c);
-      }
-  }
-  fprintf(stderr, "\n");
+  zzuf_socat_start ();
+  for (i = 0; i < LOOP_COUNT; i++)
+    {
+      fprintf (stderr, ".");
+      c = curl_easy_init ();
+      curl_easy_setopt (c, CURLOPT_URL, "http://localhost:11081/hello_world";);
+      curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, &copyBuffer);
+      curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
+      curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
+      if (oneone)
+        curl_easy_setopt (c, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
+      else
+        curl_easy_setopt (c, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
+      curl_easy_setopt (c, CURLOPT_TIMEOUT_MS, CURL_TIMEOUT);
+      curl_easy_setopt (c, CURLOPT_CONNECTTIMEOUT_MS, CURL_TIMEOUT);
+      // NOTE: use of CONNECTTIMEOUT without also
+      //   setting NOSIGNAL results in really weird
+      //   crashes on my system!
+      curl_easy_setopt (c, CURLOPT_NOSIGNAL, 1);
+      mret = curl_multi_add_handle (multi, c);
+      if (mret != CURLM_OK)
+        {
+          curl_multi_cleanup (multi);
+          curl_easy_cleanup (c);
+          zzuf_socat_stop ();
+          MHD_stop_daemon (d);
+          return 1024;
+        }
+      start = time (NULL);
+      while ((time (NULL) - start < 5) && (c != NULL))
+        {
+          max = 0;
+          FD_ZERO (&rs);
+          FD_ZERO (&ws);
+          FD_ZERO (&es);
+          curl_multi_perform (multi, &running);
+          mret = curl_multi_fdset (multi, &rs, &ws, &es, &max);
+          if (mret != CURLM_OK)
+            {
+              curl_multi_remove_handle (multi, c);
+              curl_multi_cleanup (multi);
+              curl_easy_cleanup (c);
+              zzuf_socat_stop ();
+              MHD_stop_daemon (d);
+              return 2048;
+            }
+          if (MHD_YES != MHD_get_fdset (d, &rs, &ws, &es, &max))
+            {
+              curl_multi_remove_handle (multi, c);
+              curl_multi_cleanup (multi);
+              curl_easy_cleanup (c);
+              zzuf_socat_stop ();
+              MHD_stop_daemon (d);
+              return 4096;
+            }
+          tv.tv_sec = 0;
+          tv.tv_usec = 1000;
+          select (max + 1, &rs, &ws, &es, &tv);
+          curl_multi_perform (multi, &running);
+          if (running == 0)
+            {
+              curl_multi_info_read (multi, &running);
+              curl_multi_remove_handle (multi, c);
+              curl_easy_cleanup (c);
+              c = NULL;
+            }
+          MHD_run (d);
+        }
+      if (c != NULL)
+        {
+          curl_multi_remove_handle (multi, c);
+          curl_easy_cleanup (c);
+        }
+    }
+  fprintf (stderr, "\n");
   curl_multi_cleanup (multi);
-  zzuf_socat_stop();
+  zzuf_socat_stop ();
   MHD_stop_daemon (d);
   return 0;
 }
@@ -312,7 +315,7 @@
     return 2;
   errorCount += testInternalGet ();
   errorCount += testMultithreadedGet ();
-  errorCount += testExternalGet (); 
+  errorCount += testExternalGet ();
   if (errorCount != 0)
     fprintf (stderr, "Error (code: %u)\n", errorCount);
   curl_global_cleanup ();

Modified: libmicrohttpd/src/testzzuf/daemontest_get_chunked.c
===================================================================
--- libmicrohttpd/src/testzzuf/daemontest_get_chunked.c 2008-04-13 02:41:51 UTC 
(rev 6683)
+++ libmicrohttpd/src/testzzuf/daemontest_get_chunked.c 2008-04-13 02:54:58 UTC 
(rev 6684)
@@ -139,30 +139,31 @@
   cbc.buf = buf;
   cbc.size = 2048;
   cbc.pos = 0;
-  d = MHD_start_daemon (MHD_USE_SELECT_INTERNALLY /* | MHD_USE_DEBUG */,
+  d = MHD_start_daemon (MHD_USE_SELECT_INTERNALLY /* | MHD_USE_DEBUG */ ,
                         11080, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
   if (d == NULL)
     return 1;
-  zzuf_socat_start();
-  for (i=0;i<LOOP_COUNT;i++) {
-    fprintf(stderr, ".");
-    c = curl_easy_init ();
-    curl_easy_setopt (c, CURLOPT_URL, "http://localhost:11081/hello_world";);
-    curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, &copyBuffer);
-    curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
-    curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
-    curl_easy_setopt (c, CURLOPT_TIMEOUT_MS, CURL_TIMEOUT);
-    curl_easy_setopt (c, CURLOPT_CONNECTTIMEOUT_MS, CURL_TIMEOUT);
-    curl_easy_setopt (c, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
-    // NOTE: use of CONNECTTIMEOUT without also
-    //   setting NOSIGNAL results in really weird
-    //   crashes on my system!
-    curl_easy_setopt (c, CURLOPT_NOSIGNAL, 1);
-    curl_easy_perform (c);
-    curl_easy_cleanup (c);
-  }
-  fprintf(stderr, "\n");
-  zzuf_socat_stop();
+  zzuf_socat_start ();
+  for (i = 0; i < LOOP_COUNT; i++)
+    {
+      fprintf (stderr, ".");
+      c = curl_easy_init ();
+      curl_easy_setopt (c, CURLOPT_URL, "http://localhost:11081/hello_world";);
+      curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, &copyBuffer);
+      curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
+      curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
+      curl_easy_setopt (c, CURLOPT_TIMEOUT_MS, CURL_TIMEOUT);
+      curl_easy_setopt (c, CURLOPT_CONNECTTIMEOUT_MS, CURL_TIMEOUT);
+      curl_easy_setopt (c, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
+      // NOTE: use of CONNECTTIMEOUT without also
+      //   setting NOSIGNAL results in really weird
+      //   crashes on my system!
+      curl_easy_setopt (c, CURLOPT_NOSIGNAL, 1);
+      curl_easy_perform (c);
+      curl_easy_cleanup (c);
+    }
+  fprintf (stderr, "\n");
+  zzuf_socat_stop ();
   MHD_stop_daemon (d);
   return 0;
 }
@@ -175,34 +176,35 @@
   char buf[2048];
   struct CBC cbc;
   int i;
-  
+
   cbc.buf = buf;
   cbc.size = 2048;
   cbc.pos = 0;
-  d = MHD_start_daemon (MHD_USE_THREAD_PER_CONNECTION /* | MHD_USE_DEBUG */,
+  d = MHD_start_daemon (MHD_USE_THREAD_PER_CONNECTION /* | MHD_USE_DEBUG */ ,
                         11080, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
   if (d == NULL)
     return 16;
-  zzuf_socat_start();
-  for (i=0;i<LOOP_COUNT;i++) {
-    fprintf(stderr, ".");
-    c = curl_easy_init ();
-    curl_easy_setopt (c, CURLOPT_URL, "http://localhost:11081/hello_world";);
-    curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, &copyBuffer);
-    curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
-    curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
-    curl_easy_setopt (c, CURLOPT_TIMEOUT_MS, CURL_TIMEOUT);
-    curl_easy_setopt (c, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
-    curl_easy_setopt (c, CURLOPT_CONNECTTIMEOUT_MS, CURL_TIMEOUT);
-    // NOTE: use of CONNECTTIMEOUT without also
-    //   setting NOSIGNAL results in really weird
-    //   crashes on my system!
-    curl_easy_setopt (c, CURLOPT_NOSIGNAL, 1);
-    curl_easy_perform (c);
-    curl_easy_cleanup (c);
-  }
-  fprintf(stderr, "\n");
-  zzuf_socat_stop();
+  zzuf_socat_start ();
+  for (i = 0; i < LOOP_COUNT; i++)
+    {
+      fprintf (stderr, ".");
+      c = curl_easy_init ();
+      curl_easy_setopt (c, CURLOPT_URL, "http://localhost:11081/hello_world";);
+      curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, &copyBuffer);
+      curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
+      curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
+      curl_easy_setopt (c, CURLOPT_TIMEOUT_MS, CURL_TIMEOUT);
+      curl_easy_setopt (c, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
+      curl_easy_setopt (c, CURLOPT_CONNECTTIMEOUT_MS, CURL_TIMEOUT);
+      // NOTE: use of CONNECTTIMEOUT without also
+      //   setting NOSIGNAL results in really weird
+      //   crashes on my system!
+      curl_easy_setopt (c, CURLOPT_NOSIGNAL, 1);
+      curl_easy_perform (c);
+      curl_easy_cleanup (c);
+    }
+  fprintf (stderr, "\n");
+  zzuf_socat_stop ();
   MHD_stop_daemon (d);
   return 0;
 }
@@ -230,7 +232,7 @@
   cbc.buf = buf;
   cbc.size = 2048;
   cbc.pos = 0;
-  d = MHD_start_daemon (MHD_NO_FLAG /* | MHD_USE_DEBUG */,
+  d = MHD_start_daemon (MHD_NO_FLAG /* | MHD_USE_DEBUG */ ,
                         11080, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
   if (d == NULL)
     return 256;
@@ -241,79 +243,80 @@
       MHD_stop_daemon (d);
       return 512;
     }
-  zzuf_socat_start();
-  for (i=0;i<LOOP_COUNT;i++) {
-    fprintf(stderr, ".");
-    c = curl_easy_init ();
-    curl_easy_setopt (c, CURLOPT_URL, "http://localhost:11081/hello_world";);
-    curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, &copyBuffer);
-    curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
-    curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
-    curl_easy_setopt (c, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
-    curl_easy_setopt (c, CURLOPT_TIMEOUT_MS, CURL_TIMEOUT);
-    curl_easy_setopt (c, CURLOPT_CONNECTTIMEOUT_MS, CURL_TIMEOUT);
-    // NOTE: use of CONNECTTIMEOUT without also
-    //   setting NOSIGNAL results in really weird
-    //   crashes on my system!
-    curl_easy_setopt (c, CURLOPT_NOSIGNAL, 1);   
-    mret = curl_multi_add_handle (multi, c);
-    if (mret != CURLM_OK)
-      {
-       curl_multi_cleanup (multi);
-       curl_easy_cleanup (c);
-       zzuf_socat_stop();
-       MHD_stop_daemon (d);
-       return 1024;
-      }
-    start = time (NULL);
-    while ((time (NULL) - start < 5) && (c != NULL))
-      {
-       max = 0;
-       FD_ZERO (&rs);
-       FD_ZERO (&ws);
-       FD_ZERO (&es);
-       curl_multi_perform (multi, &running);
-       mret = curl_multi_fdset (multi, &rs, &ws, &es, &max);
-       if (mret != CURLM_OK)
-         {
-           curl_multi_remove_handle (multi, c);
-           curl_multi_cleanup (multi);
-           curl_easy_cleanup (c);
-           zzuf_socat_stop();
-           MHD_stop_daemon (d);
-           return 2048;
-         }
-       if (MHD_YES != MHD_get_fdset (d, &rs, &ws, &es, &max))
-         {
-           curl_multi_remove_handle (multi, c);
-           curl_multi_cleanup (multi);
-           curl_easy_cleanup (c);
-           zzuf_socat_stop();
-           MHD_stop_daemon (d);
-           return 4096;
-         }
-       tv.tv_sec = 0;
-       tv.tv_usec = 1000;
-       select (max + 1, &rs, &ws, &es, &tv);
-       curl_multi_perform (multi, &running);
-       if (running == 0)
-         {
-           curl_multi_info_read (multi, &running);
-           curl_multi_remove_handle (multi, c);
-           curl_easy_cleanup (c);
-           c = NULL;
-         }      
-       MHD_run (d);
-      }
-    if (c != NULL)
-      {
-       curl_multi_remove_handle (multi, c);
-       curl_easy_cleanup (c);
-      }
-  }
-  fprintf(stderr, "\n");
+  zzuf_socat_start ();
+  for (i = 0; i < LOOP_COUNT; i++)
+    {
+      fprintf (stderr, ".");
+      c = curl_easy_init ();
+      curl_easy_setopt (c, CURLOPT_URL, "http://localhost:11081/hello_world";);
+      curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, &copyBuffer);
+      curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
+      curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
+      curl_easy_setopt (c, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
+      curl_easy_setopt (c, CURLOPT_TIMEOUT_MS, CURL_TIMEOUT);
+      curl_easy_setopt (c, CURLOPT_CONNECTTIMEOUT_MS, CURL_TIMEOUT);
+      // NOTE: use of CONNECTTIMEOUT without also
+      //   setting NOSIGNAL results in really weird
+      //   crashes on my system!
+      curl_easy_setopt (c, CURLOPT_NOSIGNAL, 1);
+      mret = curl_multi_add_handle (multi, c);
+      if (mret != CURLM_OK)
+        {
+          curl_multi_cleanup (multi);
+          curl_easy_cleanup (c);
+          zzuf_socat_stop ();
+          MHD_stop_daemon (d);
+          return 1024;
+        }
+      start = time (NULL);
+      while ((time (NULL) - start < 5) && (c != NULL))
+        {
+          max = 0;
+          FD_ZERO (&rs);
+          FD_ZERO (&ws);
+          FD_ZERO (&es);
+          curl_multi_perform (multi, &running);
+          mret = curl_multi_fdset (multi, &rs, &ws, &es, &max);
+          if (mret != CURLM_OK)
+            {
+              curl_multi_remove_handle (multi, c);
+              curl_multi_cleanup (multi);
+              curl_easy_cleanup (c);
+              zzuf_socat_stop ();
+              MHD_stop_daemon (d);
+              return 2048;
+            }
+          if (MHD_YES != MHD_get_fdset (d, &rs, &ws, &es, &max))
+            {
+              curl_multi_remove_handle (multi, c);
+              curl_multi_cleanup (multi);
+              curl_easy_cleanup (c);
+              zzuf_socat_stop ();
+              MHD_stop_daemon (d);
+              return 4096;
+            }
+          tv.tv_sec = 0;
+          tv.tv_usec = 1000;
+          select (max + 1, &rs, &ws, &es, &tv);
+          curl_multi_perform (multi, &running);
+          if (running == 0)
+            {
+              curl_multi_info_read (multi, &running);
+              curl_multi_remove_handle (multi, c);
+              curl_easy_cleanup (c);
+              c = NULL;
+            }
+          MHD_run (d);
+        }
+      if (c != NULL)
+        {
+          curl_multi_remove_handle (multi, c);
+          curl_easy_cleanup (c);
+        }
+    }
+  fprintf (stderr, "\n");
   curl_multi_cleanup (multi);
-  zzuf_socat_stop();
+  zzuf_socat_stop ();
   MHD_stop_daemon (d);
   return 0;
 }

Modified: libmicrohttpd/src/testzzuf/daemontest_large_put.c
===================================================================
--- libmicrohttpd/src/testzzuf/daemontest_large_put.c   2008-04-13 02:41:51 UTC 
(rev 6683)
+++ libmicrohttpd/src/testzzuf/daemontest_large_put.c   2008-04-13 02:54:58 UTC 
(rev 6684)
@@ -1,6 +1,6 @@
 /*
      This file is part of libmicrohttpd
-     (C) 2007 Christian Grothoff
+     (C) 2007, 2008 Christian Grothoff
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -35,6 +35,18 @@
 #include <unistd.h>
 #endif
 
+#include "socat.c"
+
+/**
+ * A larger loop count will run more random tests --
+ * which would be good, except that it may take too
+ * long for most user's patience.  So this small
+ * value is the default.
+ */
+#define LOOP_COUNT 10
+
+#define CURL_TIMEOUT 50L
+
 static int oneone;
 
 /**
@@ -133,8 +145,8 @@
   struct CBC cbc;
   unsigned int pos = 0;
   int done_flag = 0;
-  CURLcode errornum;
   char buf[2048];
+  int i;
 
   cbc.buf = buf;
   cbc.size = 2048;
@@ -144,40 +156,34 @@
                         NULL, NULL, &ahc_echo, &done_flag, MHD_OPTION_END);
   if (d == NULL)
     return 1;
-  c = curl_easy_init ();
-  curl_easy_setopt (c, CURLOPT_URL, "http://localhost:1080/hello_world";);
-  curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, &copyBuffer);
-  curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
-  curl_easy_setopt (c, CURLOPT_READFUNCTION, &putBuffer);
-  curl_easy_setopt (c, CURLOPT_READDATA, &pos);
-  curl_easy_setopt (c, CURLOPT_UPLOAD, 1L);
-  curl_easy_setopt (c, CURLOPT_INFILESIZE, (long) PUT_SIZE);
-  curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
-  curl_easy_setopt (c, CURLOPT_TIMEOUT, 150L);
-  if (oneone)
-    curl_easy_setopt (c, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
-  else
-    curl_easy_setopt (c, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
-  curl_easy_setopt (c, CURLOPT_CONNECTTIMEOUT, 15L);
-  // NOTE: use of CONNECTTIMEOUT without also
-  //   setting NOSIGNAL results in really weird
-  //   crashes on my system!
-  curl_easy_setopt (c, CURLOPT_NOSIGNAL, 1);
-  if (CURLE_OK != (errornum = curl_easy_perform (c)))
+  for (i = 0; i < LOOP_COUNT; i++)
     {
-      fprintf (stderr,
-               "curl_easy_perform failed: `%s'\n",
-               curl_easy_strerror (errornum));
+      fprintf (stderr, ".");
+
+      c = curl_easy_init ();
+      curl_easy_setopt (c, CURLOPT_URL, "http://localhost:1080/hello_world";);
+      curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, &copyBuffer);
+      curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
+      curl_easy_setopt (c, CURLOPT_READFUNCTION, &putBuffer);
+      curl_easy_setopt (c, CURLOPT_READDATA, &pos);
+      curl_easy_setopt (c, CURLOPT_UPLOAD, 1L);
+      curl_easy_setopt (c, CURLOPT_INFILESIZE, (long) PUT_SIZE);
+      curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
+      curl_easy_setopt (c, CURLOPT_TIMEOUT_MS, CURL_TIMEOUT);
+      if (oneone)
+        curl_easy_setopt (c, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
+      else
+        curl_easy_setopt (c, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
+      curl_easy_setopt (c, CURLOPT_CONNECTTIMEOUT_MS, CURL_TIMEOUT);
+      // NOTE: use of CONNECTTIMEOUT without also
+      //   setting NOSIGNAL results in really weird
+      //   crashes on my system!
+      curl_easy_setopt (c, CURLOPT_NOSIGNAL, 1);
+      curl_easy_perform (c);
       curl_easy_cleanup (c);
-      MHD_stop_daemon (d);
-      return 2;
     }
-  curl_easy_cleanup (c);
+  fprintf (stderr, "\n");
   MHD_stop_daemon (d);
-  if (cbc.pos != strlen ("/hello_world"))
-    return 4;
-  if (0 != strncmp ("/hello_world", cbc.buf, strlen ("/hello_world")))
-    return 8;
   return 0;
 }
 

Modified: libmicrohttpd/src/testzzuf/socat.c
===================================================================
--- libmicrohttpd/src/testzzuf/socat.c  2008-04-13 02:41:51 UTC (rev 6683)
+++ libmicrohttpd/src/testzzuf/socat.c  2008-04-13 02:54:58 UTC (rev 6684)
@@ -33,9 +33,10 @@
 static pid_t zzuf_pid;
 
 static void
-zzuf_socat_start() {
+zzuf_socat_start ()
+{
   int status;
-  char * const args[] = {
+  char *const args[] = {
     "zzuf",
     "--ratio=0.0:0.75",
     "-n",
@@ -45,54 +46,48 @@
     "TCP4:127.0.0.1:11080",
     NULL,
   };
-  zzuf_pid = fork();
-  if (zzuf_pid == -1) {
-    fprintf(stderr,
-           "fork failed: %s\n",
-           strerror(errno));
-    exit(1);
-  }
+  zzuf_pid = fork ();
+  if (zzuf_pid == -1)
+    {
+      fprintf (stderr, "fork failed: %s\n", strerror (errno));
+      exit (1);
+    }
   if (zzuf_pid != 0)
     {
-      sleep(1); /* allow zzuf and socat to start */
+      sleep (1);                /* allow zzuf and socat to start */
       status = 0;
-      if (0 < waitpid(zzuf_pid, &status, WNOHANG))
-       {
-         if (WIFEXITED(status))
-           fprintf(stderr,
-                   "zzuf died with status code %d!\n",
-                   WEXITSTATUS(status));
-         if (WIFSIGNALED(status))
-           fprintf(stderr,
-                   "zzuf died from signal %d!\n",
-                   WTERMSIG(status));
-         exit(1);
-       }
+      if (0 < waitpid (zzuf_pid, &status, WNOHANG))
+        {
+          if (WIFEXITED (status))
+            fprintf (stderr,
+                     "zzuf died with status code %d!\n",
+                     WEXITSTATUS (status));
+          if (WIFSIGNALED (status))
+            fprintf (stderr,
+                     "zzuf died from signal %d!\n", WTERMSIG (status));
+          exit (1);
+        }
       return;
     }
-  setpgrp();
-  execvp("zzuf",
-        args);
-  fprintf(stderr,
-         "execution of `zzuf' failed: %s\n",
-         strerror(errno));
-  zzuf_pid = 0; /* fork failed */
-  exit(1);
+  setpgrp ();
+  execvp ("zzuf", args);
+  fprintf (stderr, "execution of `zzuf' failed: %s\n", strerror (errno));
+  zzuf_pid = 0;                 /* fork failed */
+  exit (1);
 }
 
 
 static void
-zzuf_socat_stop() {
+zzuf_socat_stop ()
+{
   int status;
   if (zzuf_pid != 0)
     {
-      if (0 != killpg(zzuf_pid, SIGINT))
-       fprintf(stderr,
-               "Failed to killpg: %s\n",
-               strerror(errno));
-      kill(zzuf_pid, SIGINT);
-      waitpid(zzuf_pid, &status, 0);
-      sleep(1); /* allow socat to also die in peace */
+      if (0 != killpg (zzuf_pid, SIGINT))
+        fprintf (stderr, "Failed to killpg: %s\n", strerror (errno));
+      kill (zzuf_pid, SIGINT);
+      waitpid (zzuf_pid, &status, 0);
+      sleep (1);                /* allow socat to also die in peace */
     }
 }
 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]