diff options
Diffstat (limited to 'chat/irssi/patches/patch-ad')
-rw-r--r-- | chat/irssi/patches/patch-ad | 167 |
1 files changed, 65 insertions, 102 deletions
diff --git a/chat/irssi/patches/patch-ad b/chat/irssi/patches/patch-ad index c09d84f4431..8bbb02efb47 100644 --- a/chat/irssi/patches/patch-ad +++ b/chat/irssi/patches/patch-ad @@ -1,103 +1,66 @@ -$NetBSD: patch-ad,v 1.3 2003/01/12 17:53:19 veego Exp $ +$NetBSD: patch-ad,v 1.4 2003/07/05 14:25:51 wiz Exp $ -Index: src/core/network.c -=================================================================== -RCS file: /home/cvs/irssi/src/core/network.c,v -retrieving revision 1.42 -retrieving revision 1.44 -diff -c -r1.42 -r1.44 -*** network.c 26 Aug 2002 19:05:14 -0000 1.42 ---- network.c 29 Nov 2002 13:38:21 -0000 1.44 -*************** -*** 201,210 **** - /* set our own address */ - if (my_ip != NULL) { - sin_set_ip(&so, my_ip); -! if (bind(handle, &so.sa, SIZEOF_SOCKADDR(so)) == -1) { - /* failed, set it back to INADDR_ANY */ -! sin_set_ip(&so, NULL); -! bind(handle, &so.sa, SIZEOF_SOCKADDR(so)); - } - } - ---- 201,213 ---- - /* set our own address */ - if (my_ip != NULL) { - sin_set_ip(&so, my_ip); -! if (bind(handle, &so.sa, SIZEOF_SOCKADDR(so)) < 0) { - /* failed, set it back to INADDR_ANY */ -! int old_errno = errno; -! -! close(handle); -! errno = old_errno; -! return NULL; - } - } - -*************** -*** 466,498 **** - int net_gethostbyaddr(IPADDR *ip, char **name) - { - #ifdef HAVE_IPV6 -! struct addrinfo req, *ai; - int host_error; - #else - struct hostent *hp; - #endif -- char ipname[MAX_IP_LEN]; - - g_return_val_if_fail(ip != NULL, -1); - g_return_val_if_fail(name != NULL, -1); - -- net_ip2host(ip, ipname); -- - *name = NULL; - #ifdef HAVE_IPV6 -! memset(&req, 0, sizeof(struct addrinfo)); -! req.ai_socktype = SOCK_STREAM; -! req.ai_flags = AI_CANONNAME; - - /* save error to host_error for later use */ -! host_error = getaddrinfo(ipname, NULL, &req, &ai); -! if (host_error != 0) -! return host_error; -! *name = g_strdup(ai->ai_canonname); - -! freeaddrinfo(ai); - #else -! hp = gethostbyaddr(ipname, strlen(ipname), AF_INET); - if (hp == NULL) return -1; - - *name = g_strdup(hp->h_name); ---- 469,499 ---- - int net_gethostbyaddr(IPADDR *ip, char **name) - { - #ifdef HAVE_IPV6 -! union sockaddr_union so; - int host_error; -+ char hostname[NI_MAXHOST]; - #else - struct hostent *hp; - #endif - - g_return_val_if_fail(ip != NULL, -1); - g_return_val_if_fail(name != NULL, -1); - - *name = NULL; - #ifdef HAVE_IPV6 -! memset(&so, 0, sizeof(so)); -! sin_set_ip(&so, ip); - - /* save error to host_error for later use */ -! host_error = getnameinfo((struct sockaddr *) &so, sizeof(so), -! hostname, sizeof(hostname), NULL, 0, 0); -! if (host_error != 0) -! return host_error; - -! *name = g_strdup(hostname); - #else -! if (ip->family != AF_INET) return -1; -! hp = gethostbyaddr(&ip->ip, 4, AF_INET); - if (hp == NULL) return -1; - - *name = g_strdup(hp->h_name); +--- src/core/network.c.orig Mon Aug 26 21:10:02 2002 ++++ src/core/network.c +@@ -201,10 +201,13 @@ GIOChannel *net_connect_ip(IPADDR *ip, i + /* set our own address */ + if (my_ip != NULL) { + sin_set_ip(&so, my_ip); +- if (bind(handle, &so.sa, SIZEOF_SOCKADDR(so)) == -1) { ++ if (bind(handle, &so.sa, SIZEOF_SOCKADDR(so)) < 0) { + /* failed, set it back to INADDR_ANY */ +- sin_set_ip(&so, NULL); +- bind(handle, &so.sa, SIZEOF_SOCKADDR(so)); ++ int old_errno = errno; ++ ++ close(handle); ++ errno = old_errno; ++ return NULL; + } + } + +@@ -466,33 +469,31 @@ int net_gethostbyname(const char *addr, + int net_gethostbyaddr(IPADDR *ip, char **name) + { + #ifdef HAVE_IPV6 +- struct addrinfo req, *ai; ++ union sockaddr_union so; + int host_error; ++ char hostname[NI_MAXHOST]; + #else + struct hostent *hp; + #endif +- char ipname[MAX_IP_LEN]; + + g_return_val_if_fail(ip != NULL, -1); + g_return_val_if_fail(name != NULL, -1); + +- net_ip2host(ip, ipname); +- + *name = NULL; + #ifdef HAVE_IPV6 +- memset(&req, 0, sizeof(struct addrinfo)); +- req.ai_socktype = SOCK_STREAM; +- req.ai_flags = AI_CANONNAME; ++ memset(&so, 0, sizeof(so)); ++ sin_set_ip(&so, ip); + + /* save error to host_error for later use */ +- host_error = getaddrinfo(ipname, NULL, &req, &ai); +- if (host_error != 0) +- return host_error; +- *name = g_strdup(ai->ai_canonname); ++ host_error = getnameinfo((struct sockaddr *) &so, sizeof(so), ++ hostname, sizeof(hostname), NULL, 0, 0); ++ if (host_error != 0) ++ return host_error; + +- freeaddrinfo(ai); ++ *name = g_strdup(hostname); + #else +- hp = gethostbyaddr(ipname, strlen(ipname), AF_INET); ++ if (ip->family != AF_INET) return -1; ++ hp = gethostbyaddr(&ip->ip, 4, AF_INET); + if (hp == NULL) return -1; + + *name = g_strdup(hp->h_name); |