Date: Thu, 18 Jun 2009 20:42:13 +0200 From: Andrea 'simplex' Zulato <simplex@twopenguins.it> To: Peter Pentchev <roam@ringlet.net> Cc: admin@aivus.name, freebsd-ports@freebsd.org, gerrit.beine@gmx.de Subject: Re: Unrealircd problems with last patch Message-ID: <4A3A8A85.7020204@twopenguins.it> In-Reply-To: <20090618141343.GB975@straylight.m.ringlet.net> References: <4A388C26.3050900@twopenguins.it> <20090617085202.GA976@straylight.m.ringlet.net> <20090618140708.GA975@straylight.m.ringlet.net> <20090618141343.GB975@straylight.m.ringlet.net>
next in thread | previous in thread | raw e-mail | index | archive | help
It worked for me. Now irc server is up again, thanks! Andrea Peter Pentchev wrote: > On Thu, Jun 18, 2009 at 05:07:08PM +0300, Peter Pentchev wrote: > >> On Wed, Jun 17, 2009 at 11:52:02AM +0300, Peter Pentchev wrote: >> >>> On Wed, Jun 17, 2009 at 08:24:38AM +0200, Andrea 'simplex' Zulato wrote: >>> >>>> Hi, i've upgraded c-ares and Unreal from ports but Unreal won't work. >>>> It start without a problem but when someone try to connect to the server >>>> it crash with a core dump error: >>>> Jun 16 09:03:33 hazard kernel: pid 57652 (ircd), uid 0: exited on signal >>>> 11 (core dumped) >>>> I've tried to recompile unreal and c-ares whitout any result ("make >>>> install" finish without problems on both ports). >>>> If there's something that i could try, please tell me... >>>> I'm on a FreeBSD 7.2-RELEASE-p1 #0. >>>> >>> Hi, >>> >>> I've CC'd Gerrit Beine (the actual maintainer of the irc/unreal port :) >>> and Ilya Andreev, who reported the same problem to me yesterday. >>> >>> Some time ago, I sent my proposed c-ares update for testing to all >>> the maintainers of ports that depend on c-ares directly. My patches >>> made the ports compile, but I didn't have the proper setup to actually >>> test them working, since I'm not quite familiar with the programs >>> themselves. Thus, I asked the maintainers for help with testing, and >>> after nobody replied for a week or so, I went ahead and commited the update. >>> >>> Now Ilya Andreev and you have both hit a problem with UnrealIRCd, >>> and Ilya seems to have found a solution. Could you try putting >>> the attached patch-res.c into the irc/unreal/files/ directory and >>> rebuilding UnrealIRCd? If this patch helps, I could commit it if >>> Gerrit Beine does not mind. >>> >> Actually, here's another patch from Ilya who wrote to me privately >> to say that the previous one didn't quite work. >> > > And once again, with the patch inline this time, mainly for the benefit > of the ports@ mailing list and other poor souls who might stumble upon > this problem. > > G'luck, > Peter > > --- src/res.c 2006-09-19 15:45:18.000000000 +0300 > +++ src/res.c 2009-06-17 17:50:18.000000000 +0300 > @@ -48,10 +48,15 @@ > > #include <res.h> > > +/* Prevent crashes due to invalid prototype/ABI */ > +#if ARES_VERSION < 0x010600 > + #error "You have an old c-ares version on your system and/or Unreals c-ares failed to compile!" > +#endif > + > /* Forward declerations */ > -void unrealdns_cb_iptoname(void *arg, int status, struct hostent *he); > -void unrealdns_cb_nametoip_verify(void *arg, int status, struct hostent *he); > -void unrealdns_cb_nametoip_link(void *arg, int status, struct hostent *he); > +void unrealdns_cb_iptoname(void *arg, int status, int timeouts, struct hostent *he); > +void unrealdns_cb_nametoip_verify(void *arg, int status, int timeouts, struct hostent *he); > +void unrealdns_cb_nametoip_link(void *arg, int status, int timeouts, struct hostent *he); > void unrealdns_delasyncconnects(void); > static unsigned int unrealdns_haship(void *binaryip, int length); > static void unrealdns_addtocache(char *name, void *binaryip, int length); > @@ -240,7 +245,7 @@ > #endif > } > > -void unrealdns_cb_iptoname(void *arg, int status, struct hostent *he) > +void unrealdns_cb_iptoname(void *arg, int status, int timeouts, struct hostent *he) > { > DNSReq *r = (DNSReq *)arg; > DNSReq *newr; > @@ -290,7 +295,7 @@ > } > > > -void unrealdns_cb_nametoip_verify(void *arg, int status, struct hostent *he) > +void unrealdns_cb_nametoip_verify(void *arg, int status, int timeouts, struct hostent *he) > { > DNSReq *r = (DNSReq *)arg; > aClient *acptr = r->cptr; > @@ -363,7 +368,7 @@ > unrealdns_freeandremovereq(r); > } > > -void unrealdns_cb_nametoip_link(void *arg, int status, struct hostent *he) > +void unrealdns_cb_nametoip_link(void *arg, int status, int timeouts, struct hostent *he) > { > DNSReq *r = (DNSReq *)arg; > int n; > @@ -390,9 +395,11 @@ > /* fatal error while resolving */ > sendto_realops("Unable to resolve hostname '%s', when trying to connect to server %s.", > r->name, r->linkblock->servername); > + r->linkblock->refcount--; > unrealdns_freeandremovereq(r); > return; > } > + r->linkblock->refcount--; > > #ifdef INET6 > if (((he->h_length != 4) && (he->h_length != 16)) || !he->h_addr_list[0]) > @@ -715,21 +722,34 @@ > } else > if (*param == 'i') /* INFORMATION */ > { > - struct ares_config_info inf; > + struct ares_options inf; > int i; > + int optmask; > > - ares_get_config(&inf, resolver_channel); > + ares_save_options(resolver_channel, &inf, &optmask); > > sendtxtnumeric(sptr, "****** DNS Configuration Information ******"); > sendtxtnumeric(sptr, " c-ares version: %s",ares_version(NULL)); > - sendtxtnumeric(sptr, " timeout: %d", inf.timeout); > - sendtxtnumeric(sptr, " tries: %d", inf.tries); > - sendtxtnumeric(sptr, " # of servers: %d", inf.numservers); > - for (i = 0; i < inf.numservers; i++) > - sendtxtnumeric(sptr, " server #%d: %s", i+1, inf.servers[i] ? inf.servers[i] : "[???]"); > - > - /* TODO: free or get memleak ! */ > + > + if(optmask & ARES_OPT_TIMEOUTMS) > + sendtxtnumeric(sptr, " timeout: %d", inf.timeout); > + if(optmask & ARES_OPT_TRIES) > + sendtxtnumeric(sptr, " tries: %d", inf.tries); > + if(optmask & ARES_OPT_SERVERS) > + { > + sendtxtnumeric(sptr, " # of servers: %d", inf.nservers); > + for (i = 0; i < inf.nservers; i++) > + sendtxtnumeric(sptr, " server #%d: %s", i+1, inet_ntoa(inf.servers[i])); > + } > + if(optmask & ARES_OPT_DOMAINS) > + { > + sendtxtnumeric(sptr, " # of search domains: %d", inf.ndomains); > + for (i = 0; i < inf.ndomains; i++) > + sendtxtnumeric(sptr, " domain #%d: %s", i+1, inf.domains[i]); > + } > sendtxtnumeric(sptr, "****** End of DNS Configuration Info ******"); > + > + ares_destroy_options(&inf); > } else /* STATISTICS */ > { > sendtxtnumeric(sptr, "DNS CACHE Stats:"); > >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4A3A8A85.7020204>