[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r18166 - gnunet/src/transport
From: |
gnunet |
Subject: |
[GNUnet-SVN] r18166 - gnunet/src/transport |
Date: |
Tue, 15 Nov 2011 18:33:15 +0100 |
Author: wachs
Date: 2011-11-15 18:33:15 +0100 (Tue, 15 Nov 2011)
New Revision: 18166
Modified:
gnunet/src/transport/plugin_transport_http.c
Log:
check for natted peer address
Modified: gnunet/src/transport/plugin_transport_http.c
===================================================================
--- gnunet/src/transport/plugin_transport_http.c 2011-11-15 17:19:28 UTC
(rev 18165)
+++ gnunet/src/transport/plugin_transport_http.c 2011-11-15 17:33:15 UTC
(rev 18166)
@@ -534,6 +534,7 @@
GNUNET_assert ((addrlen == sizeof (struct IPv4HttpAddress)) ||
(addrlen == sizeof (struct IPv6HttpAddress)));
+
/* look for existing connection */
s = lookup_session (plugin, target, session, addr, addrlen, 1);
#if DEBUG_HTTP
@@ -561,13 +562,36 @@
"Initiiating new connection to peer `%s'\n",
GNUNET_i2s (target));
#endif
- s = create_session (plugin, target, addr, addrlen, cont, cont_cls);
- GNUNET_CONTAINER_DLL_insert (plugin->head, plugin->tail, s);
- // initiate new connection
- if (GNUNET_SYSERR == (res = client_connect (s)))
+ int res = GNUNET_OK;
+
+ if (addrlen == sizeof (struct IPv4HttpAddress))
{
- GNUNET_CONTAINER_DLL_remove (plugin->head, plugin->tail, s);
- delete_session (s);
+ struct IPv4HttpAddress * a4 = (struct IPv4HttpAddress *) addr;
+ if (ntohs(a4->u4_port) == 0)
+ res = GNUNET_SYSERR;
+ }
+ if (addrlen == sizeof (struct IPv6HttpAddress))
+ {
+ struct IPv6HttpAddress * a6 = (struct IPv6HttpAddress *) addr;
+ if (ntohs(a6->u6_port) == 0)
+ res = GNUNET_SYSERR;
+ }
+ if (res == GNUNET_OK)
+ {
+ s = create_session (plugin, target, addr, addrlen, cont, cont_cls);
+ GNUNET_CONTAINER_DLL_insert (plugin->head, plugin->tail, s);
+ // initiate new connection
+ res = client_connect (s);
+ }
+ if (res == GNUNET_SYSERR)
+ {
+ if (s != NULL)
+ {
+ GNUNET_CONTAINER_DLL_remove (plugin->head, plugin->tail, s);
+ delete_session (s);
+ }
+ if (cont != NULL)
+ cont (cont_cls, target, GNUNET_SYSERR);
return GNUNET_SYSERR;
}
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r18166 - gnunet/src/transport,
gnunet <=