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.0 +0300
+++ src/res.c 2009-06-17 17:50:18.0 +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