{
struct Session * s = NULL;
struct Plugin * plugin = cls;
+ struct IPv6UdpAddress * udp_a6;
+ struct IPv4UdpAddress * udp_a4;
GNUNET_assert (plugin != NULL);
GNUNET_assert (address != NULL);
return NULL;
}
- if ((address->address_length == sizeof (struct IPv4UdpAddress)) &&
- (plugin->sockv4 == NULL))
- return NULL;
-
- if ((address->address_length == sizeof (struct IPv6UdpAddress)) &&
- (plugin->sockv6 == NULL))
- return NULL;
+ if (address->address_length == sizeof (struct IPv4UdpAddress))
+ {
+ if (plugin->sockv4 == NULL)
+ return NULL;
+ udp_a4 = (struct IPv4UdpAddress *) address->address;
+ if (udp_a4->u4_port == 0)
+ return NULL;
+ }
+ if (address->address_length == sizeof (struct IPv6UdpAddress))
+ {
+ if (plugin->sockv6 == NULL)
+ return NULL;
+ udp_a6 = (struct IPv6UdpAddress *) address->address;
+ if (udp_a6->u6_port == 0)
+ return NULL;
+ }
/* check if session already exists */
struct SessionCompareContext cctx;
udpw = plugin->ipv6_queue_head;
}
else
+ {
GNUNET_break (0);
+ return 0;
+ }
const struct sockaddr * sa = udpw->session->sock_addr;
slen = udpw->session->addrlen;