update velocity always at the end of iteration
[oweals/gnunet.git] / src / rest / gnunet-rest-server.c
index fdcd4f9c56801e352b26fbc51e9e572039fcb036..da75edf81249d0c1ec23da916e2a306008a29a22 100644 (file)
@@ -118,6 +118,11 @@ static char* allow_origin;
  */
 static char* allow_headers;
 
+/**
+ * Allowed Credentials (CORS)
+ */
+static char* allow_credentials;
+
 /**
  * MHD Connection handle
  */
@@ -232,8 +237,11 @@ header_iterator (void *cls,
   struct GNUNET_REST_RequestHandle *handle = cls;
   struct GNUNET_HashCode hkey;
   char *val;
+  char *lowerkey;
 
-  GNUNET_CRYPTO_hash (key, strlen (key), &hkey);
+  lowerkey = GNUNET_strdup (key);
+  GNUNET_STRINGS_utf8_tolower (key, lowerkey);
+  GNUNET_CRYPTO_hash (lowerkey, strlen (lowerkey), &hkey);
   GNUNET_asprintf (&val, "%s", value);
   if (GNUNET_OK !=
       GNUNET_CONTAINER_multihashmap_put (handle->header_param_map,
@@ -243,8 +251,9 @@ header_iterator (void *cls,
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
                 "Could not load add header `%s'=%s\n",
-                key, value);
+                lowerkey, value);
   }
+  GNUNET_free (lowerkey);
   return MHD_YES;
 }
 
@@ -301,7 +310,7 @@ post_data_iter (void *cls,
                                          GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY))
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "Could not load add url param `%s'=%s\n",
+                "Could not load add url param '%s'=%s\n",
                 key, data);
     GNUNET_free(val);
   }
@@ -404,7 +413,7 @@ create_response (void *cls,
                                &header_iterator,
                                rest_conndata_handle);
     con_handle->pp = MHD_create_post_processor(con,
-                                              4000,
+                                              65536,
                                               post_data_iter,
                                               rest_conndata_handle);
     if (*upload_data_size)
@@ -430,6 +439,12 @@ create_response (void *cls,
                                MHD_HTTP_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN,
                                allow_origin);
     }
+    if (NULL != allow_credentials)
+    {
+      MHD_add_response_header (con_handle->response,
+                               "Access-Control-Allow-Credentials",
+                               allow_credentials);
+    }
     if (NULL != allow_headers)
     {
       MHD_add_response_header (con_handle->response,
@@ -660,6 +675,7 @@ do_shutdown (void *cls)
               "Shutting down...\n");
   kill_httpd ();
   GNUNET_free_non_null (allow_origin);
+  GNUNET_free_non_null (allow_credentials);
   GNUNET_free_non_null (allow_headers);
 }
 
@@ -752,7 +768,7 @@ load_plugin (void *cls,
   struct GNUNET_HashCode key;
   if (NULL == lib_ret)
   {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
                 "Could not load plugin `%s'\n",
                 libname);
     return;
@@ -765,7 +781,7 @@ load_plugin (void *cls,
                                                       plugin,
                                                       GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY))
   {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
                 "Could not load add plugin `%s'\n",
                 libname);
     return;
@@ -803,6 +819,15 @@ run (void *cls,
                 "No CORS Access-Control-Allow-Origin Header will be sent...\n");
   }
 
+  if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_string (cfg, "rest",
+                                                          "REST_ALLOW_CREDENTIALS",
+                                                          &allow_credentials))
+  {
+    //No origin specified
+    GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+                "No CORS Access-Control-Allow-Origin Header will be sent...\n");
+  }
+
   if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_string (cfg, "rest",
                                                           "REST_ALLOW_HEADERS",
                                                           &allow_headers))