aboutsummaryrefslogtreecommitdiff
path: root/src/transport/plugin_transport_unix.c
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2013-10-07 13:58:09 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2013-10-07 13:58:09 +0000
commit6987c2bcfeb806cb4c223c8766ccfcd4358644b6 (patch)
treefec938c872a1605dcfcdcd6e6b41f8f57509439b /src/transport/plugin_transport_unix.c
parent297e089292b5acba6e0a2d560ec172e1ff41c89e (diff)
downloadgnunet-6987c2bcfeb806cb4c223c8766ccfcd4358644b6.tar.gz
gnunet-6987c2bcfeb806cb4c223c8766ccfcd4358644b6.zip
fix for incoming addresses:
incoming addresses are only marked with address length 0 if the address cannot be used to initiate a connection to his address. Therefor only for tcp and http(s) incoming connections an address length of 0 is reported whereas for other plugins (unix, udp, wlan) the incoming address can be used to initiate a connection to this address.
Diffstat (limited to 'src/transport/plugin_transport_unix.c')
-rw-r--r--src/transport/plugin_transport_unix.c37
1 files changed, 17 insertions, 20 deletions
diff --git a/src/transport/plugin_transport_unix.c b/src/transport/plugin_transport_unix.c
index f5ab3a694..e80102a33 100644
--- a/src/transport/plugin_transport_unix.c
+++ b/src/transport/plugin_transport_unix.c
@@ -985,7 +985,7 @@ unix_demultiplexer (struct Plugin *plugin, struct GNUNET_PeerIdentity *sender,
985 s->inbound = GNUNET_YES; 985 s->inbound = GNUNET_YES;
986 /* Notify transport and ATS about new inbound session */ 986 /* Notify transport and ATS about new inbound session */
987 plugin->env->session_start (NULL, sender, 987 plugin->env->session_start (NULL, sender,
988 PLUGIN_NAME, NULL, 0, s, &plugin->ats_network, 1); 988 PLUGIN_NAME, ua, ua_len, s, &plugin->ats_network, 1);
989 } 989 }
990 reschedule_session_timeout (s); 990 reschedule_session_timeout (s);
991 991
@@ -1288,40 +1288,37 @@ static const char *
1288unix_address_to_string (void *cls, const void *addr, size_t addrlen) 1288unix_address_to_string (void *cls, const void *addr, size_t addrlen)
1289{ 1289{
1290 static char rbuf[1024]; 1290 static char rbuf[1024];
1291 struct UnixAddress *ua = (struct UnixAddress *) addr; 1291 struct UnixAddress *ua = (struct UnixAddress *) addr;
1292 char *addrstr; 1292 char *addrstr;
1293 size_t addr_str_len; 1293 size_t addr_str_len;
1294 1294
1295 if (0 == addrlen)
1296 {
1297 GNUNET_snprintf(rbuf, sizeof (rbuf), "%s", TRANSPORT_SESSION_INBOUND_STRING);
1298 }
1299 if ((NULL == addr) || (sizeof (struct UnixAddress) > addrlen)) 1295 if ((NULL == addr) || (sizeof (struct UnixAddress) > addrlen))
1300 { 1296 {
1301 GNUNET_break (0); 1297 GNUNET_break(0);
1302 return NULL; 1298 return NULL ;
1303 } 1299 }
1304 addrstr = (char *) &ua[1]; 1300 addrstr = (char *) &ua[1];
1305 addr_str_len = ntohl (ua->addrlen); 1301 addr_str_len = ntohl (ua->addrlen);
1306 1302
1307 if (addr_str_len != addrlen - sizeof (struct UnixAddress)) 1303 if (addr_str_len != addrlen - sizeof(struct UnixAddress))
1308 { 1304 {
1309 GNUNET_break (0); 1305 GNUNET_break(0);
1310 return NULL; 1306 return NULL ;
1311 } 1307 }
1312 1308
1313 if ('\0' != addrstr[addr_str_len - 1]) 1309 if ('\0' != addrstr[addr_str_len - 1])
1314 { 1310 {
1315 GNUNET_break (0); 1311 GNUNET_break(0);
1316 return NULL; 1312 return NULL ;
1317 } 1313 }
1318 if (strlen (addrstr) + 1 != addr_str_len) 1314 if (strlen (addrstr) + 1 != addr_str_len)
1319 { 1315 {
1320 GNUNET_break (0); 1316 GNUNET_break(0);
1321 return NULL; 1317 return NULL ;
1322 } 1318 }
1323 1319
1324 GNUNET_snprintf(rbuf, sizeof (rbuf), "%s.%u.%s", PLUGIN_NAME, ntohl (ua->options), addrstr); 1320 GNUNET_snprintf (rbuf, sizeof(rbuf), "%s.%u.%s", PLUGIN_NAME,
1321 ntohl (ua->options), addrstr);
1325 return rbuf; 1322 return rbuf;
1326} 1323}
1327 1324