optimize setting upload length if available
authorChristian Grothoff <christian@grothoff.org>
Wed, 16 May 2018 19:35:37 +0000 (21:35 +0200)
committerChristian Grothoff <christian@grothoff.org>
Wed, 16 May 2018 19:36:38 +0000 (21:36 +0200)
src/gns/gnunet-gns-benchmark.c
src/gns/gnunet-gns-proxy.c
src/gns/gnunet-service-gns.c

index afa540c85da9e490ef92ce18a576a830cfc84e46..d5afae9f661c1fb3ccd2c75463748d8a79f2ac5c 100644 (file)
@@ -492,7 +492,7 @@ process_stdin (void *cls)
       delta = GNUNET_TIME_absolute_get_duration (last);
       last = GNUNET_TIME_absolute_get ();
       fprintf (stderr,
-              "Read 10000 domain names in %s\n",
+              "Read 100000 domain names in %s\n",
               GNUNET_STRINGS_relative_time_to_string (delta,
                                                       GNUNET_YES));
     }
index 08663a57e93944c61be5d0d9cc1476f749160516..02ebcf0f193e4258e17dcfce4318cbd60010781f 100644 (file)
@@ -1801,6 +1801,23 @@ create_response (void *cls,
       curl_easy_setopt (s5r->curl, CURLOPT_WRITEDATA, s5r);
       curl_easy_setopt (s5r->curl, CURLOPT_READFUNCTION, &curl_upload_cb);
       curl_easy_setopt (s5r->curl, CURLOPT_READDATA, s5r);
+      {
+        const char *us;
+        long upload_size;
+
+        us = MHD_lookup_connection_value (con,
+                                          MHD_HEADER_KIND,
+                                          MHD_HTTP_HEADER_CONTENT_LENGTH);
+        if ( (1 == sscanf (us,
+                           "%ld",
+                           &upload_size)) &&
+             (upload_size >= 0) )
+        {
+          curl_easy_setopt (s5r->curl,
+                            CURLOPT_INFILESIZE,
+                            upload_size);
+        }
+      }
     }
     else if (0 == strcasecmp (meth, MHD_HTTP_METHOD_POST))
     {
@@ -1810,6 +1827,23 @@ create_response (void *cls,
       curl_easy_setopt (s5r->curl, CURLOPT_WRITEDATA, s5r);
       curl_easy_setopt (s5r->curl, CURLOPT_READFUNCTION, &curl_upload_cb);
       curl_easy_setopt (s5r->curl, CURLOPT_READDATA, s5r);
+      {
+        const char *us;
+        long upload_size;
+
+        us = MHD_lookup_connection_value (con,
+                                          MHD_HEADER_KIND,
+                                          MHD_HTTP_HEADER_CONTENT_LENGTH);
+        if ( (1 == sscanf (us,
+                           "%ld",
+                           &upload_size)) &&
+             (upload_size >= 0) )
+        {
+          curl_easy_setopt (s5r->curl,
+                            CURLOPT_INFILESIZE,
+                            upload_size);
+        }
+      }
     }
     else if (0 == strcasecmp (meth, MHD_HTTP_METHOD_HEAD))
     {
index c376ddfcc390478ec44771d7fa67e33c0cca23a0..cffae824d7100e577d1c38017901bcc570985c7f 100644 (file)
@@ -296,7 +296,6 @@ client_disconnect_cb (void *cls,
                                  clh);
     GNUNET_free (clh);
   }
-
   GNUNET_free (gc);
 }
 
@@ -340,26 +339,29 @@ send_lookup_response (void* cls,
                       const struct GNUNET_GNSRECORD_Data *rd)
 {
   struct ClientLookupHandle *clh = cls;
-  struct GNUNET_MQ_Envelope *env;
+  struct GnsClient *gc = clh->gc;
+ struct GNUNET_MQ_Envelope *env;
   struct LookupResultMessage *rmsg;
   size_t len;
 
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "Sending LOOKUP_RESULT message with %u results\n",
               (unsigned int) rd_count);
-
-  len = GNUNET_GNSRECORD_records_get_size (rd_count, rd);
+  len = GNUNET_GNSRECORD_records_get_size (rd_count,
+                                           rd);
   env = GNUNET_MQ_msg_extra (rmsg,
                              len,
                              GNUNET_MESSAGE_TYPE_GNS_LOOKUP_RESULT);
   rmsg->id = clh->request_id;
   rmsg->rd_count = htonl (rd_count);
-  GNUNET_GNSRECORD_records_serialize (rd_count, rd, len,
+  GNUNET_GNSRECORD_records_serialize (rd_count,
+                                      rd,
+                                      len,
                                       (char*) &rmsg[1]);
-  GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq(clh->gc->client),
+  GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (gc->client),
                   env);
-  GNUNET_CONTAINER_DLL_remove (clh->gc->clh_head,
-                               clh->gc->clh_tail,
+  GNUNET_CONTAINER_DLL_remove (gc->clh_head,
+                               gc->clh_tail,
                                clh);
   GNUNET_free (clh);
   GNUNET_STATISTICS_update (statistics,
@@ -428,7 +430,6 @@ handle_lookup (void *cls,
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "Received LOOKUP `%s' message\n",
               name);
-
   clh = GNUNET_new (struct ClientLookupHandle);
   GNUNET_CONTAINER_DLL_insert (gc->clh_head,
                                gc->clh_tail,