En el parche DBH3 se anade un nuevo campo en la estructura de los clientes IRC, sin tener en cuenta que dicha estructura son, en realidad, dos: una para clientes locales y otra para clientes remotos. Debido a ello, la gestion de clientes remotos podia corromper la memoria del servidor, hasta que este moria (el menor de los males posibles, desde luego). Me he tirado toda una tarde intentanto localizar el problema, y al final basta con cambiar el orden del campo de la estructura. Lo mas dificil, claro, es acotar el problema hasta ese punto. Lo curioso es que esto esta claramente indicado en el codigo UNDERNET. Despiste rules :-) JCEA *** ../ircu2.10.06/include/struct.h Mon Jul 19 20:26:35 1999 --- ../ircu2.10.06+/include/struct.h Mon Jul 19 20:22:13 1999 *************** *** 73,78 **** --- 73,81 ---- time_t lastnick; /* TimeStamp on nick */ int marker; /* /who processing marker */ unsigned int flags; /* client flags */ + #if defined(DB_HISPANO) || defined(DB_ESNET) + unsigned int hmodes; /* HISPANO user modes (flag extensions) */ + #endif struct Client *from; /* == self, if Local Client, *NEVER* NULL! */ int fd; /* >= 0, for local clients */ unsigned int hopcount; /* number of servers to this 0 = local */ *************** *** 118,126 **** char sockhost[HOSTLEN + 1]; /* This is the host name from the socket and after which the connection was accepted. */ char passwd[PASSWDLEN + 1]; - #if defined(DB_HISPANO) || defined(DB_ESNET) - unsigned int hmodes; /* HISPANO user modes (flag extensions) */ - #endif }; struct Server { --- 121,126 ---- diff -cr ../ircu2.10.06/ircd/s_debug.c ../ircu2.10.06+/ircd/s_debug.c *** ../ircu2.10.06/ircd/s_debug.c Mon Jul 19 20:26:37 1999 --- ../ircu2.10.06+/ircd/s_debug.c Mon Jul 19 20:22:39 1999 *************** *** 202,208 **** #endif #ifdef DB_HISPANO '.','I','R','C','-', 'H','I','S','P','A','N','O','.','O','R','G',':', ! 'D','B','H' ,'4','+', 'N', 'r','+', --- 202,208 ---- #endif #ifdef DB_HISPANO '.','I','R','C','-', 'H','I','S','P','A','N','O','.','O','R','G',':', ! 'D','B','H' ,'5','+', 'N', 'r','+',