X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcutil%2Funix%2Fsilcunixnet.c;h=2332672d4643d125180f7923315020246153c51c;hb=ff6a990d9e7361a5d1eb9909483bcea7decef4d4;hp=e0befdc19979ca325a83cd39b6da9015e34a28f8;hpb=576393b8e2d8a3cb49055588cae02c271ad08bfb;p=runtime.git diff --git a/lib/silcutil/unix/silcunixnet.c b/lib/silcutil/unix/silcunixnet.c index e0befdc1..2332672d 100644 --- a/lib/silcutil/unix/silcunixnet.c +++ b/lib/silcutil/unix/silcunixnet.c @@ -363,8 +363,10 @@ int silc_net_udp_receive(SilcStream stream, char *remote_ip_addr, if (remote_ip_addr && remote_port) { if (sock->ipv6) { +#ifdef HAVE_IPV6 from = (struct sockaddr *)&s.sin6; flen = sizeof(s.sin6); +#endif /* HAVE_IPV6 */ } else { from = (struct sockaddr *)&s.sin; flen = sizeof(s.sin); @@ -395,9 +397,13 @@ int silc_net_udp_receive(SilcStream stream, char *remote_ip_addr, /* Return remote address */ if (remote_ip_addr && remote_port) { if (sock->ipv6) { +#ifdef HAVE_IPV6 *remote_port = ntohs(s.sin6.sin6_port); inet_ntop(AF_INET6, &s.sin6.sin6_addr, remote_ip_addr, remote_ip_addr_size); +#else + *remote_port = 0; +#endif /* HAVE_IPV6 */ } else { *remote_port = ntohs(s.sin.sin_port); inet_ntop(AF_INET, &s.sin.sin_addr, remote_ip_addr, @@ -695,6 +701,9 @@ SILC_FSM_STATE(silc_net_connect_st_finish) silc_async_free(conn->op); } + if (conn->sock && conn->status != SILC_NET_OK) + silc_net_close_connection(conn->sock); + return SILC_FSM_FINISH; }