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:");
>
>   

_______________________________________________
freebsd-ports@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "freebsd-ports-unsubscr...@freebsd.org"

Reply via email to