X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd-alex.git;a=blobdiff_plain;f=src%2Fngircd%2Fresolve.c;h=c7e600381e81b571ded2cd343887529418e7d59c;hp=ff40b8d523cd10853e69353d283abeabcb86d2d9;hb=48326e061aacd954e24f76c53ded10448cbc28eb;hpb=e4e1595bffdb6c43cd163ae576ee9715b859e494 diff --git a/src/ngircd/resolve.c b/src/ngircd/resolve.c index ff40b8d5..c7e60038 100644 --- a/src/ngircd/resolve.c +++ b/src/ngircd/resolve.c @@ -1,6 +1,6 @@ /* * ngIRCd -- The Next Generation IRC Daemon - * Copyright (c)2001-2009 by Alexander Barton (alex@barton.de) + * Copyright (c)2001-2011 Alexander Barton (alex@barton.de) and Contributors. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -75,7 +75,8 @@ Resolve_Addr(PROC_STAT * s, const ng_ipaddr_t *Addr, int identsock, } else if( pid == 0 ) { /* Sub process */ Log_Init_Subprocess("Resolver"); - Do_ResolveAddr( Addr, identsock, pipefd[1]); + Conn_CloseAllSockets(identsock); + Do_ResolveAddr(Addr, identsock, pipefd[1]); Log_Exit_Subprocess("Resolver"); exit(0); } @@ -104,6 +105,7 @@ Resolve_Name( PROC_STAT *s, const char *Host, void (*cbfunc)(int, short)) } else if( pid == 0 ) { /* Sub process */ Log_Init_Subprocess("Resolver"); + Conn_CloseAllSockets(NONE); Do_ResolveName(Host, pipefd[1]); Log_Exit_Subprocess("Resolver"); exit(0); @@ -380,7 +382,7 @@ Do_ResolveAddr(const ng_ipaddr_t *Addr, int identsock, int w_fd) if (!ReverseLookup(Addr, hostname, sizeof(hostname))) goto dns_done; - if (ForwardLookup(hostname, &resolved_addr, AF_UNSPEC)) { + if (ForwardLookup(hostname, &resolved_addr, ng_ipaddr_af(Addr))) { if (!Addr_in_list(&resolved_addr, Addr)) { Log_Forgery_WrongIP(tmp_ip_str, hostname); strlcpy(hostname, tmp_ip_str, sizeof(hostname));