gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r11577 - gnunet/src/transport


From: gnunet
Subject: [GNUnet-SVN] r11577 - gnunet/src/transport
Date: Mon, 31 May 2010 18:03:43 +0200

Author: wachs
Date: 2010-05-31 18:03:43 +0200 (Mon, 31 May 2010)
New Revision: 11577

Modified:
   gnunet/src/transport/plugin_transport_http.c
   gnunet/src/transport/test_plugin_transport_http.c
Log:


Modified: gnunet/src/transport/plugin_transport_http.c
===================================================================
--- gnunet/src/transport/plugin_transport_http.c        2010-05-31 15:28:34 UTC 
(rev 11576)
+++ gnunet/src/transport/plugin_transport_http.c        2010-05-31 16:03:43 UTC 
(rev 11577)
@@ -1199,11 +1199,42 @@
 http_plugin_address_suggested (void *cls,
                                   void *addr, size_t addrlen)
 {
-  /* struct Plugin *plugin = cls; */
+  struct IPv4HttpAddress *v4;
+  struct IPv6HttpAddress *v6;
 
-  /* check if the address is plausible; if so,
-     add it to our list! */
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"HTTP Plugin: 
http_plugin_address_suggested\n");
+  if ((addrlen != sizeof (struct IPv4HttpAddress)) &&
+      (addrlen != sizeof (struct IPv6HttpAddress)))
+    {
+      GNUNET_break_op (0);
+      return GNUNET_SYSERR;
+    }
+  if (addrlen == sizeof (struct IPv4HttpAddress))
+    {
+      v4 = (struct IPv4HttpAddress *) addr;
+
+      v4->u_port = ntohs (v4->u_port);
+      if (v4->u_port != plugin->port_inbound)
+      {
+        GNUNET_break_op (0);
+        return GNUNET_SYSERR;
+      }
+    }
+  else
+    {
+      v6 = (struct IPv6HttpAddress *) addr;
+      if (IN6_IS_ADDR_LINKLOCAL (&v6->ipv6_addr))
+        {
+          GNUNET_break_op (0);
+          return GNUNET_SYSERR;
+        }
+      v6->u6_port = ntohs (v6->u6_port);
+      if (v6->u6_port != plugin->port_inbound)
+      {
+        GNUNET_break_op (0);
+        return GNUNET_SYSERR;
+      }
+
+    }
   return GNUNET_OK;
 }
 

Modified: gnunet/src/transport/test_plugin_transport_http.c
===================================================================
--- gnunet/src/transport/test_plugin_transport_http.c   2010-05-31 15:28:34 UTC 
(rev 11576)
+++ gnunet/src/transport/test_plugin_transport_http.c   2010-05-31 16:03:43 UTC 
(rev 11577)
@@ -394,7 +394,7 @@
 {
   if (NULL==address)
     return;
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"Plugin returned: `%s'\n",address);
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"Plugin returnedp pretty address: 
`%s'\n",address);
   fail_pretty_printer_count++;
 }
 
@@ -421,6 +421,7 @@
   struct Plugin_Address * tmp;
   const char * addr_str;
   unsigned int count_str_addr;
+  unsigned int suggest_res;
 
   fail_pretty_printer = GNUNET_YES;
   fail_notify_address = GNUNET_YES;
@@ -485,8 +486,11 @@
   {
     cur = addr_head;
 
-    
api->address_pretty_printer(NULL,"http",cur->addr,cur->addrlen,GNUNET_NO,TEST_TIMEOUT,&pretty_printer_cb,NULL);
-    addr_str = api->address_to_string(NULL,cur->addr,cur->addrlen);
+    api->address_pretty_printer 
(NULL,"http",cur->addr,cur->addrlen,GNUNET_NO,TEST_TIMEOUT,&pretty_printer_cb,NULL);
+    addr_str = api->address_to_string (NULL,cur->addr,cur->addrlen);
+    suggest_res = api->check_address (NULL,cur->addr,cur->addrlen);
+
+    GNUNET_assert (GNUNET_OK == suggest_res);
     GNUNET_assert (NULL != addr_str);
     count_str_addr++;
 
@@ -501,6 +505,25 @@
   fail_pretty_printer=GNUNET_NO;
   fail_addr_to_str=GNUNET_NO;
 
+  /* Suggesting addresses with wrong port*/
+  struct IPv4HttpAddress failing_addr;
+  failing_addr.ipv4_addr = INADDR_LOOPBACK;
+  failing_addr.u_port = 0;
+  suggest_res = api->check_address (NULL,&failing_addr,sizeof (struct 
IPv4HttpAddress));
+  GNUNET_assert (GNUNET_SYSERR == suggest_res);
+
+  /* Suggesting addresses with wrong size*/
+  failing_addr.ipv4_addr = INADDR_LOOPBACK;
+  failing_addr.u_port = 0;
+  suggest_res = api->check_address (NULL,&failing_addr,sizeof (struct 
IPv6HttpAddress));
+  GNUNET_assert (GNUNET_SYSERR == suggest_res);
+
+  /* Suggesting addresses with wrong address*/
+  failing_addr.ipv4_addr = 0;
+  failing_addr.u_port = 12389;
+  suggest_res = api->check_address (NULL,&failing_addr,sizeof (struct 
IPv4HttpAddress));
+  GNUNET_assert (GNUNET_SYSERR == suggest_res);
+
   /* testing finished, shutting down */
   if ((fail_notify_address == GNUNET_NO) && (fail_pretty_printer == GNUNET_NO) 
&& (fail_addr_to_str == GNUNET_NO) )
     fail = 0;




reply via email to

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