gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r24391 - gnunet/src/gns


From: gnunet
Subject: [GNUnet-SVN] r24391 - gnunet/src/gns
Date: Thu, 18 Oct 2012 09:46:05 +0200

Author: grothoff
Date: 2012-10-18 09:46:05 +0200 (Thu, 18 Oct 2012)
New Revision: 24391

Modified:
   gnunet/src/gns/gnunet-gns-proxy.c
Log:
-code cleanup, handle -1 timeout from curl better

Modified: gnunet/src/gns/gnunet-gns-proxy.c
===================================================================
--- gnunet/src/gns/gnunet-gns-proxy.c   2012-10-18 07:33:34 UTC (rev 24390)
+++ gnunet/src/gns/gnunet-gns-proxy.c   2012-10-18 07:46:05 UTC (rev 24391)
@@ -17,6 +17,12 @@
      Free Software Foundation, Inc., 59 Temple Place - Suite 330,
      Boston, MA 02111-1307, USA.
 */
+/**
+ * @author Martin Schanzenbach
+ * @file src/gns/gnunet-gns-proxy.c
+ * @brief HTTP(S) proxy that rewrites URIs and fakes certificats to make GADS 
work
+ *        with legacy browsers
+ */
 #include "platform.h"
 #include <microhttpd.h>
 #include <curl/curl.h>
@@ -741,6 +747,7 @@
                 char* buf,
                 size_t max);
 
+
 /**
  * Check HTTP response header for mime
  *
@@ -837,14 +844,11 @@
                    MHD_HTTP_HEADER_SET_COOKIE,
                    cookie_hdr_len))
   {
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                "Looking for cookie in: `%s'\n", hdr_generic);    
     ndup = GNUNET_strdup (hdr_generic+cookie_hdr_len+1);
     memset (new_cookie_hdr, 0, sizeof (new_cookie_hdr));
-    tok = strtok (ndup, ";");
-
-    GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-                "Looking for cookie in : %s\n", hdr_generic);
-    
-    for (; tok != NULL; tok = strtok (NULL, ";"))
+    for (tok = strtok (ndup, ";"); tok != NULL; tok = strtok (NULL, ";"))
     {
       GNUNET_log (GNUNET_ERROR_TYPE_INFO,
                   "Got Cookie token: %s\n", tok);
@@ -966,6 +970,7 @@
   return bytes;
 }
 
+
 /**
  * schedule mhd
  *
@@ -982,6 +987,7 @@
 static void
 run_httpds (void);
 
+
 /**
  * Task run whenever HTTP server operations are pending.
  *
@@ -992,6 +998,7 @@
 do_httpd (void *cls,
           const struct GNUNET_SCHEDULER_TaskContext *tc);
 
+
 static void
 run_mhd_now (struct MhdHttpList *hd)
 {
@@ -1006,12 +1013,14 @@
   hd->httpd_task = GNUNET_SCHEDULER_add_now (&do_httpd, hd);
 }
 
+
 /**
  * Ask cURL for the select sets and schedule download
  */
 static void
 curl_download_prepare (void);
 
+
 /**
  * Callback to free content
  *
@@ -1491,6 +1500,7 @@
   return to_copy;
 }
 
+
 /**
  * Task that is run when we are ready to receive more data
  * from curl
@@ -1501,6 +1511,7 @@
 static void
 curl_task_download (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
 
+
 /**
  * Ask cURL for the select sets and schedule download
  */
@@ -1521,9 +1532,7 @@
   FD_ZERO (&rs);
   FD_ZERO (&ws);
   FD_ZERO (&es);
-  mret = curl_multi_fdset (curl_multi, &rs, &ws, &es, &max);
-
-  if (mret != CURLM_OK)
+  if (CURLM_OK != (mret = curl_multi_fdset (curl_multi, &rs, &ws, &es, &max)))
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
                 "%s failed at %s:%d: `%s'\n",
@@ -1532,23 +1541,20 @@
     //TODO cleanup here?
     return;
   }
-
-  mret = curl_multi_timeout (curl_multi, &to);
-  rtime = GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MILLISECONDS, to);
-
+  to = -1;
+  GNUNET_break (CURLM_OK == curl_multi_timeout (curl_multi, &to));
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "cURL multi fds: max=%d timeout=%llu\n", max, to);
-
+              "cURL multi fds: max=%d timeout=%lld\n", max, (long long) to);
+  if (-1 == to)
+    rtime = GNUNET_TIME_UNIT_FOREVER_REL;
+  else
+    rtime = GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MILLISECONDS, to);
   grs = GNUNET_NETWORK_fdset_create ();
   gws = GNUNET_NETWORK_fdset_create ();
   GNUNET_NETWORK_fdset_copy_native (grs, &rs, max + 1);
   GNUNET_NETWORK_fdset_copy_native (gws, &ws, max + 1);
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "Scheduling task cURL\n");
-
   if (curl_download_task != GNUNET_SCHEDULER_NO_TASK)
-    GNUNET_SCHEDULER_cancel (curl_download_task);
-  
+    GNUNET_SCHEDULER_cancel (curl_download_task);  
   if (-1 != max)
   {
     curl_download_task =
@@ -1854,6 +1860,7 @@
 
 }
 
+
 /**
  * Initialize download and trigger curl
  *
@@ -1890,6 +1897,7 @@
                           ctask);
 }
 
+
 static void*
 mhd_log_callback (void* cls, const char* url)
 {
@@ -2272,7 +2280,6 @@
 }
 
 
-
 /**
  * Read data from socket
  *
@@ -2282,6 +2289,7 @@
 static void
 do_read (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
 
+
 /**
  * Read from remote end
  *
@@ -2291,6 +2299,7 @@
 static void
 do_read_remote (void* cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
 
+
 /**
  * Write data to remote socket
  *
@@ -2358,6 +2367,7 @@
   GNUNET_free(s5r);
 }
 
+
 /**
  * Write data to socket
  *
@@ -2406,6 +2416,7 @@
                                      &do_read_remote, s5r);
 }
 
+
 /**
  * Read from remote end
  *
@@ -2475,6 +2486,7 @@
   return MHD_add_connection (daemon, fd, addr, len);
 }
 
+
 /**
  * Read file in filename
  *
@@ -2648,7 +2660,7 @@
 }
 
 
-/*
+/**
  * Accept policy for mhdaemons
  *
  * @param cls NULL
@@ -2755,7 +2767,6 @@
 }
 
 
-
 /**
  * Read data from incoming connection
  *
@@ -3032,10 +3043,7 @@
                                        s5r->remote_sock,
                                        &do_read_remote, s5r);
     }
-
-
   }
-
 }
 
 
@@ -3330,6 +3338,7 @@
   return GNUNET_YES;
 }
 
+
 /**
  * Main function that will be run
  *
@@ -3446,13 +3455,9 @@
                 GNUNET_a2s ((const struct sockaddr *) &sa, sizeof (sa)));
     return;
   }
-
   ltask = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL,
                                          lsock, &do_accept, NULL);
 
-  ctasks_head = NULL;
-  ctasks_tail = NULL;
-
   if (0 != curl_global_init (CURL_GLOBAL_WIN32))
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
@@ -3463,10 +3468,6 @@
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "Proxy listens on port %u\n",
               port);
-
-  mhd_httpd_head = NULL;
-  mhd_httpd_tail = NULL;
-  total_mhd_connections = 0;
 #if ! HAVE_MHD_NO_LISTEN_SOCKET
   if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_filename (cfg, "gns-proxy",
                                                             "PROXY_UNIXPATH",
@@ -3548,18 +3549,13 @@
                            MHD_OPTION_URI_LOG_CALLBACK, &mhd_log_callback, 
NULL,
                            MHD_OPTION_END);
 #endif
-
-  GNUNET_assert (httpd != NULL);
+  GNUNET_break (httpd != NULL);
   hd->daemon = httpd;
   hd->httpd_task = GNUNET_SCHEDULER_NO_TASK;
-
   GNUNET_CONTAINER_DLL_insert (mhd_httpd_head, mhd_httpd_tail, hd);
-
   run_httpds ();
-
   GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL,
                                 &do_shutdown, NULL);
-
 }
 
 
@@ -3582,13 +3578,10 @@
       &GNUNET_GETOPT_set_string, &cafile_opt},
     GNUNET_GETOPT_OPTION_END
   };
-
   int ret;
 
   if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
     return 2;
-
-
   GNUNET_log_setup ("gnunet-gns-proxy", "WARNING", NULL);
   ret =
       (GNUNET_OK ==
@@ -3596,11 +3589,8 @@
                            _("GNUnet GNS proxy"),
                            options,
                            &run, NULL)) ? 0 : 1;
-  GNUNET_free_non_null ((char*)argv);
-
+  GNUNET_free_non_null ((char *) argv);
   return ret;
 }
 
-
-
-
+/* end of gnunet-gns-proxy.c */




reply via email to

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