Kaynağa Gözat

handle 204 status code

Christian Grothoff 4 yıl önce
ebeveyn
işleme
1890329443
3 değiştirilmiş dosya ile 20 ekleme ve 5 silme
  1. 2 0
      src/Makefile.am
  2. 1 1
      src/curl/Makefile.am
  3. 17 4
      src/curl/curl.c

+ 2 - 0
src/Makefile.am

@@ -28,6 +28,7 @@ if HAVE_MHD
   JSON_DIR = json
 endif
 endif
+if HAVE_MHD
 if HAVE_LIBGNURL
   CURL_DIR = curl
 else
@@ -35,6 +36,7 @@ if HAVE_LIBCURL
   CURL_DIR = curl
 endif
 endif
+endif
 
 if BUILD_PULSE_HELPERS
 CONVERSATION_DIR = conversation

+ 1 - 1
src/curl/Makefile.am

@@ -32,7 +32,7 @@ libgnunetcurl_la_LIBADD = \
   $(LIB_GNURL) \
   $(XLIB)
 libgnunetcurl_la_CPPFLAGS = \
- $(CPP_GNURL) $(AM_CPPFLAGS)
+ $(CPP_GNURL) $(AM_CPPFLAGS) $(MHD_CFLAGS)
 
 #check_PROGRAMS = \
 #  test_curl

+ 17 - 4
src/curl/curl.c

@@ -25,6 +25,7 @@
  */
 #include "platform.h"
 #include <jansson.h>
+#include <microhttpd.h>
 #include "gnunet_curl_lib.h"
 
 #if ENABLE_BENCHMARK
@@ -181,7 +182,8 @@ struct GNUNET_CURL_Context
  * @return library context
  */
 struct GNUNET_CURL_Context *
-GNUNET_CURL_init (GNUNET_CURL_RescheduleCallback cb, void *cb_cls)
+GNUNET_CURL_init (GNUNET_CURL_RescheduleCallback cb,
+                  void *cb_cls)
 {
   struct GNUNET_CURL_Context *ctx;
   CURLM *multi;
@@ -263,7 +265,10 @@ GNUNET_CURL_is_valid_scope_id (const char *scope_id)
  * @return number of bytes processed from @a bufptr
  */
 static size_t
-download_cb (char *bufptr, size_t size, size_t nitems, void *cls)
+download_cb (char *bufptr,
+             size_t size,
+             size_t nitems,
+             void *cls)
 {
   struct GNUNET_CURL_DownloadBuffer *db = cls;
   size_t msize;
@@ -376,7 +381,9 @@ setup_job (CURL *eh,
   }
   job->easy_handle = eh;
   job->ctx = ctx;
-  GNUNET_CONTAINER_DLL_insert (ctx->jobs_head, ctx->jobs_tail, job);
+  GNUNET_CONTAINER_DLL_insert (ctx->jobs_head,
+                               ctx->jobs_tail,
+                               job);
   return job;
 }
 
@@ -497,7 +504,11 @@ GNUNET_CURL_job_add (struct GNUNET_CURL_Context *ctx,
                  curl_slist_append (NULL, "Content-Type: application/json")));
   }
 
-  job = GNUNET_CURL_job_add2 (ctx, eh, job_headers, jcc, jcc_cls);
+  job = GNUNET_CURL_job_add2 (ctx,
+                              eh,
+                              job_headers,
+                              jcc,
+                              jcc_cls);
   curl_slist_free_all (job_headers);
   return job;
 }
@@ -616,6 +627,8 @@ GNUNET_CURL_download_get_result_ (struct GNUNET_CURL_DownloadBuffer *db,
                   (const char *) db->buf);
     return NULL;
   }
+  if (MHD_HTTP_NO_CONTENT == *response_code)
+    return NULL;
   json = NULL;
   if (0 == db->eno)
   {