[IPv6 IRC-DEV] [CVS] Module ipv6: Change committed
Brought to you by:
zolty
From: Zolty <zo...@us...> - 2002-11-09 14:53:06
|
CVSROOT : /cvsroot/irc-dev Module : ipv6 Commit time: 2002-11-09 14:53:04 UTC Modified files: .patches CAMBIOS.Ipv6 CAMBIOS2_10_H_05 todo.jcea include/channel.h include/patchlevel.h include/querycmds.h ircd/channel.c ircd/m_watch.c ircd/opercmds.c ircd/s_bdd.c ircd/s_err.c ircd/s_user.c ircd/whocmds.c Added files: CAMBIOS2_10_H_06 Log message: Sincronizacion u2.10.H.06.13 ---------------------- diff included ---------------------- Index: ipv6/.patches diff -u ipv6/.patches:1.2 ipv6/.patches:1.3 --- ipv6/.patches:1.2 Mon Sep 30 08:01:59 2002 +++ ipv6/.patches Sat Nov 9 06:52:54 2002 @@ -1 +1 @@ -u2.10.H.05.93 +u2.10.H.06.13 Index: ipv6/CAMBIOS.Ipv6 diff -u ipv6/CAMBIOS.Ipv6:1.11 ipv6/CAMBIOS.Ipv6:1.12 --- ipv6/CAMBIOS.Ipv6:1.11 Mon Sep 30 08:01:59 2002 +++ ipv6/CAMBIOS.Ipv6 Sat Nov 9 06:52:54 2002 @@ -1,3 +1,7 @@ +* 2002/11/09 zo...@ir... INET6.12 +----------------------------------------------------------------------- +Actualizacion IRCD hasta el u2.10.H.06.13. + * 2002/09/30 zo...@ir... INET6.11 ----------------------------------------------------------------------- Actualizacion IRCD hasta el u2.10.H.05.93. Index: ipv6/CAMBIOS2_10_H_05 diff -u ipv6/CAMBIOS2_10_H_05:1.2 ipv6/CAMBIOS2_10_H_05:1.3 --- ipv6/CAMBIOS2_10_H_05:1.2 Mon Sep 30 08:01:59 2002 +++ ipv6/CAMBIOS2_10_H_05 Sat Nov 9 06:52:54 2002 @@ -1,4 +1,15 @@ -$Id: CAMBIOS2_10_H_05,v 1.2 2002/09/30 15:01:59 zolty Exp $ +$Id: CAMBIOS2_10_H_05,v 1.3 2002/11/09 14:52:54 zolty Exp $ + +* 2002/09/01 jc...@ar... (u2.10.H.05.95) FEATURE + ----------------------------------------------------------------------- + Ampliacion de TOPICLEN de 160 a 240 caracteres (un 50% mas). + +* 2002/09/01 ni...@ir... (u2.10.H.05.94) FIX + ----------------------------------------------------------------------- + Deshacemos el parche u2.10.H.05.71 por enviar el numeric en vez del + nick. Es imposible saber el nick al que se envia un PRIVMSG si el + mensaje se pierde en transito por la red a su destino. Por ello, se + vuelve a mostrar el "*" del codigo original. * 2002/09/30 ni...@ir... (u2.10.H.05.93) FIX ----------------------------------------------------------------------- Index: ipv6/CAMBIOS2_10_H_06 diff -u /dev/null ipv6/CAMBIOS2_10_H_06:1.1 --- /dev/null Sat Nov 9 06:53:05 2002 +++ ipv6/CAMBIOS2_10_H_06 Sat Nov 9 06:52:54 2002 @@ -0,0 +1,79 @@ +$Id: CAMBIOS2_10_H_06,v 1.1 2002/11/09 14:52:54 zolty Exp $ + +* 2002/10/22 jc...@ar... (u2.10.H.06.13) FIX + ----------------------------------------------------------------------- + Otro bug delicado de topic y "/list". + +* 2002/10/21 jc...@ar... (u2.10.H.06.12) FIX + ----------------------------------------------------------------------- + Bug fix de los dos parches anteriores. Este bug es chungo, pero se ha + detectado y solucionado en minutos :-). El servidor cascaba si se hacia + un "/list", ya que ahora puede no existir ni siquiera la informacion + de TOPIC. Antes, aunque no hubiese topic, su espacio SI existia, que + es precisamente lo que queremos eliminar con estos parches. + +* 2002/10/21 jc...@ar... (u2.10.H.06.11) FIX + ----------------------------------------------------------------------- + Bug fix de los dos parches anteriores. + +* 2002/10/21 jc...@ar... (u2.10.H.06.10) FEATURE + ----------------------------------------------------------------------- + Como optimizacion del parche anterior, cuando se pone un "topic" nuevo, + reutilizamos la memoria dinamica del topic anterior si su longitud es + lo bastante grande como para acomodar el nuevo. + +* 2002/10/21 jc...@ar... (u2.10.H.06.09) FEATURE + ----------------------------------------------------------------------- + En vez de reservar 'X' bytes para el topic y el nick del usuario que lo + pone, se usa memoria dinamica para ello. + +* 2002/10/21 ni...@ir... (u2.10.H.06.08) FIX + ----------------------------------------------------------------------- + Solucionado un bug que hacia que no se propagase el modo de canal +M en + los bursts. + +* 2002/10/10 jc...@ar... (u2.10.H.06.07) FIX + ----------------------------------------------------------------------- + Solucionado un posible problema de seguridad en "m_stat()". Ahora no + es problematico, pero no sabemos como puede evolucionar esa funcion + en el futuro, asi que mejor curarse en salud. + +* 2002/10/09 jc...@ar... (u2.10.H.06.06) FEATURE + ----------------------------------------------------------------------- + No se incluye la IP cifrada en los usuarios con IP Virtual personalizada, + porque ello incrementa su "sex appeal" cara a los usuarios. + + El perder esa informacion queda compensado con el + hecho de que las entradas de los usuarios +r quedan + registradas en los bots, incluyendo sus IPs. + + No me acaba de gustar, pero es una peticion de Sisco. + +* 2002/10/09 ni...@ir... (u2.10.H.06.05) FIX + ----------------------------------------------------------------------- + Refinamos el parche u2.10.H.06.02 pues nodos con esa version, esta vez + tenian un numero negativo de helpers. El error se producia porque al + eliminar el conteo de register_user() con la intencion de procesar esa + entrada y sumarla en m_nick(), para entradas remotas de opers con + nick:clave o entradas remotas de bots con +h, no se hacia el conteo de + ese helper, y cuando despues un +h salia de la red, se restaba uno sin + haberse sumado uno anteriormente. + +* 2002/10/07 am...@on... (u2.10.H.06.04) FIX + ----------------------------------------------------------------------- + Comprobaciones extras en los parametros del mensaje DBQ. En concreto, + el nombre de la tabla sólo puede contener un caracter. + +* 2002/10/07 am...@on... (u2.10.H.06.03) FIX + ----------------------------------------------------------------------- + Los JOIN, PART y WHO en los que el origen (es decir, sptr) es un servidor + son ignorados, ya que en el caso del JOIN y WHO, mata el proceso. + +* 2002/10/06 ni...@ir... (u2.10.H.06.02) FIX + ----------------------------------------------------------------------- + Solucionamos un pequeño bug que hacia que en el LUSERS se mostrase + un numero equivocado (mayor) de helpers. + +* 2002/10/01 jc...@ar... (u2.10.H.06.01) CLEANUP + ----------------------------------------------------------------------- + "make indent". Index: ipv6/include/channel.h diff -u ipv6/include/channel.h:1.3 ipv6/include/channel.h:1.4 --- ipv6/include/channel.h:1.3 Mon Sep 30 08:02:00 2002 +++ ipv6/include/channel.h Sat Nov 9 06:52:54 2002 @@ -31,7 +31,7 @@ #define MODEBUFLEN 200 #define KEYLEN 23 -#define TOPICLEN 160 +#define TOPICLEN 240 #define CHANNELLEN 64 #define MAXBANS 75 @@ -154,8 +154,13 @@ struct Channel *nextch, *prevch, *hnextch; Mode mode; time_t creationtime; - char topic[TOPICLEN + 1]; - char topic_nick[NICKLEN + 1]; +/* +** 'topic_nick' se almacena JUSTO A CONTINUACION +** del 'topic' propiamente dicho. Asi nos basta +** con un "malloc"/"free", en vez de dos. +*/ + char *topic; + char *topic_nick; time_t topic_time; unsigned int users; struct SLink *members; Index: ipv6/include/patchlevel.h diff -u ipv6/include/patchlevel.h:1.12 ipv6/include/patchlevel.h:1.13 --- ipv6/include/patchlevel.h:1.12 Mon Sep 30 08:02:00 2002 +++ ipv6/include/patchlevel.h Sat Nov 9 06:52:54 2002 @@ -49,7 +49,7 @@ \ \ \ - "+INET6.11" + "+INET6.12" /* * Deliberate empty lines Index: ipv6/include/querycmds.h diff -u ipv6/include/querycmds.h:1.2 ipv6/include/querycmds.h:1.3 --- ipv6/include/querycmds.h:1.2 Mon Sep 30 08:02:00 2002 +++ ipv6/include/querycmds.h Sat Nov 9 06:52:54 2002 @@ -22,7 +22,6 @@ unsigned int helpers; /* IsHelpOp() */ unsigned int bots_oficiales; /* IsServicesBot() */ #endif - }; /*============================================================================= Index: ipv6/ircd/channel.c diff -u ipv6/ircd/channel.c:1.6 ipv6/ircd/channel.c:1.7 --- ipv6/ircd/channel.c:1.6 Mon Sep 30 08:02:00 2002 +++ ipv6/ircd/channel.c Sat Nov 9 06:52:54 2002 @@ -20,6 +20,7 @@ #include "sys.h" #include <stdlib.h> +#include <assert.h> #include "h.h" #include "struct.h" #include "channel.h" @@ -47,7 +48,7 @@ #include "sprintf_irc.h" #include "querycmds.h" -RCSTAG_CC("$Id: channel.c,v 1.6 2002/09/30 15:02:00 zolty Exp $"); +RCSTAG_CC("$Id: channel.c,v 1.7 2002/11/09 14:52:54 zolty Exp $"); aChannel *channel = NullChn; @@ -2544,13 +2545,14 @@ if (chptr->users > args->min_users && chptr->users < args->max_users && chptr->creationtime > args->min_time && chptr->creationtime < args->max_time && - (!args->topic_limits || (*chptr->topic && + (!args->topic_limits || (chptr->topic && chptr->topic_time > args->min_topic_time && chptr->topic_time < args->max_topic_time))) { sendto_one(cptr, rpl_str(RPL_LIST), me.name, cptr->name, ShowChannel(cptr, chptr) ? chptr->chname : "*", - chptr->users, ShowChannel(cptr, chptr) ? chptr->topic : ""); + chptr->users, ShowChannel(cptr, + chptr) ? (chptr->topic ? (char *)(chptr->topic) : "") : ""); chptr = chptr->nextch; break; } @@ -2623,6 +2625,11 @@ chptr->nextch->prevch = chptr->prevch; hRemChannel(chptr); --nrof.channels; + + if (chptr->topic) + { + RunFree(chptr->topic); + } RunFree((char *)chptr); } @@ -2645,6 +2652,9 @@ size_t *buflen; char *p = NULL, *bufptr; + if (IsServer(sptr)) /* Un servidor entrando en un canal? */ + return 0; + if (parc < 2 || *parv[1] == '\0') { sendto_one(sptr, err_str(ERR_NEEDMOREPARAMS), me.name, parv[0], "JOIN"); @@ -2888,7 +2898,7 @@ if (MyUser(sptr)) { del_invite(sptr, chptr); - if (chptr->topic[0] != '\0') + if (chptr->topic) { sendto_one(sptr, rpl_str(RPL_TOPIC), me.name, parv[0], name, chptr->topic); @@ -3554,6 +3564,20 @@ modebuf[mblen2++] = 'S'; break; } + case 'M': + { + register int tmp; + prev_mode &= ~MODE_MSGNONREG; + if (!(tmp = netride || + (current_mode->mode & MODE_MSGNONREG)) || wipeout) + { + bmodebuf[mblen++] = 'M'; + current_mode->mode |= MODE_MSGNONREG; + } + if (!tmp) + modebuf[mblen2++] = 'M'; + break; + } #endif /* BDD */ case 'n': { @@ -4058,6 +4082,9 @@ sptr->flags &= ~FLAGS_TS8; + if (IsServer(sptr)) /* Sin esto no pasa nada, pero por si las moscas.. */ + return 0; + if (parc < 2 || parv[1][0] == '\0') { sendto_one(sptr, err_str(ERR_NEEDMOREPARAMS), me.name, parv[0], "PART"); @@ -4415,7 +4442,7 @@ if (!topic) /* only asking for topic */ { - if (chptr->topic[0] == '\0') + if (chptr->topic) sendto_one(sptr, rpl_str(RPL_NOTOPIC), me.name, parv[0], chptr->chname); else { @@ -4435,8 +4462,37 @@ #endif { /* setting a topic */ - strncpy(chptr->topic, topic, TOPICLEN); - strncpy(chptr->topic_nick, sptr->name, NICKLEN); + { + int len, len2; + + len = strlen(topic); + if (len > TOPICLEN) + { + len = TOPICLEN; + topic[len] = '\0'; + } + + len2 = len + strlen(sptr->name) + 2; /* El +2 es por los dos '\0' */ + if (chptr->topic) + { + if (chptr->topic_nick + strlen(chptr->topic_nick) + 1 - chptr->topic < + len2) + { + RunFree(chptr->topic); + chptr->topic = RunMalloc(len2); + assert(chptr->topic); + } + } + else + { + chptr->topic = RunMalloc(len2); + assert(chptr->topic); + } + + strcpy(chptr->topic, topic); + chptr->topic_nick = chptr->topic + len + 1; /* Ponemos el nick justo a continuacion */ + strcpy(chptr->topic_nick, sptr->name); + } chptr->topic_time = now; if (!IsLocalChannel(name)) { @@ -4815,7 +4871,8 @@ if (chptr && ShowChannel(sptr, chptr) && sptr->user) sendto_one(sptr, rpl_str(RPL_LIST), me.name, parv[0], ShowChannel(sptr, chptr) ? chptr->chname : "*", - chptr->users - number_of_zombies(chptr), chptr->topic); + chptr->users - number_of_zombies(chptr), + chptr->topic ? chptr->topic : ""); } sendto_one(sptr, rpl_str(RPL_LISTEND), me.name, parv[0]); Index: ipv6/ircd/m_watch.c diff -u ipv6/ircd/m_watch.c:1.4 ipv6/ircd/m_watch.c:1.5 --- ipv6/ircd/m_watch.c:1.4 Mon Sep 30 08:02:00 2002 +++ ipv6/ircd/m_watch.c Sat Nov 9 06:52:54 2002 @@ -110,20 +110,24 @@ if (!wptr) return; /* No esta en ningun notify */ -#ifdef BDD_VIP if (!ip_override) { +#if defined(BDD_VIP) if (sptr->user->virtualhost[0] == '\0') { make_virtualhost(sptr, 0, 0); } +#endif +#if defined(BDD) if (!IsHidden(sptr)) { /* Optimizacion para simplificar codigo mas abajo */ ip_override = ip_override_SeeHidden = sptr->user->host; } - } +#else + ip_override = ip_override_SeeHidden = sptr->user->host; #endif + } wptr->lasttime = TStime(); @@ -148,11 +152,11 @@ } else { -#if defined(BDD_VIP) +#if defined(BDD) && defined(BDD_VIP) ip = sptr->user->virtualhost; if (IsHiddenViewer(acptr) || (sptr == acptr)) { - ip = cptr->user->host; + ip = sptr->user->host; } #else ip = sptr->user->host; Index: ipv6/ircd/opercmds.c diff -u ipv6/ircd/opercmds.c:1.3 ipv6/ircd/opercmds.c:1.4 --- ipv6/ircd/opercmds.c:1.3 Mon Sep 30 08:02:00 2002 +++ ipv6/ircd/opercmds.c Sat Nov 9 06:52:54 2002 @@ -61,7 +61,7 @@ #include "s_serv.h" #include "hash.h" -RCSTAG_CC("$Id: opercmds.c,v 1.3 2002/09/30 15:02:00 zolty Exp $"); +RCSTAG_CC("$Id: opercmds.c,v 1.4 2002/11/09 14:52:54 zolty Exp $"); /* * m_squit @@ -305,7 +305,7 @@ aClient *acptr; aGline *agline, *a2gline; aConfItem *aconf; - char stat = parc > 1 ? parv[1][0] : '\0'; + unsigned char stat = parc > 1 ? parv[1][0] : '\0'; Reg1 int i; /* m_stats is so obnoxiously full of special cases that the different @@ -1366,7 +1366,10 @@ parv[3] = NULL; if ((i = hunt_server(IsServer(acptr), cptr, sptr, ":%s TRACE %s :%s", 2, parc, parv)) == HUNTED_NOSUCH) + { + sendto_one(sptr, err_str(ERR_NOSUCHSERVER), me.name, parv[0], parv[2]); return 0; + } } else i = HUNTED_ISME; @@ -1381,10 +1384,7 @@ acptr = FindNServer(parv[2]); if ((i = hunt_server(0, cptr, sptr, ":%s TRACE %s :%s", 2, parc, parv)) == HUNTED_NOSUCH) - { - sendto_one(sptr, err_str(ERR_NOSUCHSERVER), me.name, parv[0], parv[2]); return 0; - } tname = parv[1]; } Index: ipv6/ircd/s_bdd.c diff -u ipv6/ircd/s_bdd.c:1.2 ipv6/ircd/s_bdd.c:1.3 --- ipv6/ircd/s_bdd.c:1.2 Thu Sep 12 12:19:00 2002 +++ ipv6/ircd/s_bdd.c Sat Nov 9 06:52:54 2002 @@ -1578,7 +1578,9 @@ return 0; /* No autorizado */ } /* <Origen> DBQ [<server>] <Tabla> <Clave> */ - if (parc != 3 && parc != 4) + if ((parc != 3 && parc != 4) || + (parc == 3 && (parv[1][0] == '\0' || parv[1][1] != '\0')) || + (parc == 4 && (parv[2][0] == '\0' || parv[2][1] != '\0'))) { if (!IsServer(sptr)) Index: ipv6/ircd/s_err.c diff -u ipv6/ircd/s_err.c:1.2 ipv6/ircd/s_err.c:1.3 --- ipv6/ircd/s_err.c:1.2 Mon Sep 30 08:02:00 2002 +++ ipv6/ircd/s_err.c Sat Nov 9 06:52:54 2002 @@ -24,7 +24,7 @@ #include "sprintf_irc.h" #include "m_watch.h" -RCSTAG_CC("$Id: s_err.c,v 1.2 2002/09/30 15:02:00 zolty Exp $"); +RCSTAG_CC("$Id: s_err.c,v 1.3 2002/11/09 14:52:54 zolty Exp $"); typedef struct { int num_val; @@ -42,6 +42,7 @@ {RPL_YOURHOST, ":Your host is %s, running version %s"}, /* 003 */ {RPL_CREATED, ":This server was created %s"}, + /* 004 */ #if defined(BDD) #if defined(BDD_VIP) @@ -52,6 +53,7 @@ #else {RPL_MYINFO, "%s %s dioswkg biklmnopstv"}, #endif /* BDD */ + /* 005 */ {RPL_ISUPPORT, "%s :are supported by this server"}, /* 006 */ @@ -675,7 +677,7 @@ #ifdef BDD {RPL_LUSEROP, "%d :IRCop(s), %d helper(s) and %d official bot(s) online"}, #else - {RPL_LUSEROP, "%d :operator(s) online"}, + {RPL_LUSEROP, "%d :IRCop(s) online"}, #endif /* 253 */ {RPL_LUSERUNKNOWN, "%d :unknown connection(s)"}, Index: ipv6/ircd/s_user.c diff -u ipv6/ircd/s_user.c:1.7 ipv6/ircd/s_user.c:1.8 --- ipv6/ircd/s_user.c:1.7 Mon Sep 30 08:02:00 2002 +++ ipv6/ircd/s_user.c Sat Nov 9 06:52:54 2002 @@ -69,7 +69,7 @@ #include "IPcheck.h" #include "class.h" -RCSTAG_CC("$Id: s_user.c,v 1.7 2002/09/30 15:02:00 zolty Exp $"); +RCSTAG_CC("$Id: s_user.c,v 1.8 2002/11/09 14:52:54 zolty Exp $"); /* *INDENT-OFF* */ @@ -619,8 +619,8 @@ if (IsOper(sptr)) ++nrof.opers; #if defined(BDD) - if (IsHelpOp(sptr)) - ++nrof.helpers; + if (!MyUser(sptr) && IsHelpOp(sptr)) /* Sumamos para entradas REMOTAS de +h */ + ++nrof.helpers; /* Las locales se procesan en m_nick */ if (IsServicesBot(sptr)) ++nrof.bots_oficiales; #endif @@ -1954,6 +1954,7 @@ * ha entrado (ha puesto el nick). * (Cambio de nick local y remoto). */ + if (IsUser(sptr) && !nick_equivalentes) { #ifdef BDD @@ -1974,9 +1975,11 @@ } else { -#endif /* BDD */ chequea_estado_watch(sptr, RPL_LOGON, NULL, NULL); } +#else /* BDD */ + chequea_estado_watch(sptr, RPL_LOGON, NULL, NULL); +#endif /* BDD */ } #endif /* WATCH */ @@ -2185,9 +2188,19 @@ else if (MyUser(sptr) || Protocol(cptr) < 10) sendto_one(sptr, err_str(ERR_NOSUCHNICK), me.name, parv[0], nick); else + { +/* +** jc...@ar... - u2.10.H.05.94 +** No podemos devolver el NICK porque +** aqui solo tenemos el "numeric", y si +** el usuario ya se ha desconectado, como +** es el caso, pues no podemos hacer +** la conversion "numeric" -> "nick". +*/ sendto_one(sptr, - ":%s %d %s %s :Target left IRC. Failed to deliver: [%.50s]", - me.name, ERR_NOSUCHNICK, sptr->name, nick, parv[parc - 1]); + ":%s %d %s * :Target left IRC. Failed to deliver: [%.50s]", + me.name, ERR_NOSUCHNICK, sptr->name, parv[parc - 1]); + } continue; } /* @@ -4340,9 +4353,25 @@ && (reg = db_buscar_registro(BDD_IPVIRTUAL2DB, acptr->name))) { assert(strlen(reg->valor) < (HOSTLEN - 24)); + +/* +** A partir de u2.10.H.06.06 no se incluye la IP cifrada +** en los usuarios con IP Virtual personalizada porque +** ello incrementa su "sex appeal" cara a los usuarios. +** El perder esa informacion queda compensado con el +** hecho de que las entradas de los usuarios +r quedan +** registradas en los bots, incluyendo sus IPs. +** No me acaba de gustar, pero es una peticion de Sisco. +** 09/Oct/02 - jc...@ar... +*/ +#if 0 *(acptr->user->virtualhost + 13) = '.'; strcpy(acptr->user->virtualhost + 14, reg->valor); strcat(acptr->user->virtualhost + 14, ".virtual"); +#else + strcpy(acptr->user->virtualhost, reg->valor); + strcat(acptr->user->virtualhost, ".virtual"); +#endif } else { Index: ipv6/ircd/whocmds.c diff -u ipv6/ircd/whocmds.c:1.5 ipv6/ircd/whocmds.c:1.6 --- ipv6/ircd/whocmds.c:1.5 Mon Sep 30 08:02:00 2002 +++ ipv6/ircd/whocmds.c Sat Nov 9 06:52:54 2002 @@ -64,7 +64,7 @@ #include "querycmds.h" #include "IPcheck.h" -RCSTAG_CC("$Id: whocmds.c,v 1.5 2002/09/30 15:02:00 zolty Exp $"); +RCSTAG_CC("$Id: whocmds.c,v 1.6 2002/11/09 14:52:54 zolty Exp $"); /* * m_who() @@ -391,6 +391,9 @@ char *p; /* Scratch char pointer */ char *qrt; /* Pointer to the query type */ static char mymask[512]; /* To save the mask before corrupting it */ + + if (IsServer(sptr)) + return 0; /* Let's find where is our mask, and if actually contains something */ mask = ((parc > 1) ? parv[1] : NULL); Index: ipv6/todo.jcea diff -u ipv6/todo.jcea:1.2 ipv6/todo.jcea:1.3 --- ipv6/todo.jcea:1.2 Mon Sep 30 08:01:59 2002 +++ ipv6/todo.jcea Sat Nov 9 06:52:54 2002 @@ -1,4 +1,32 @@ -$Id: todo.jcea,v 1.2 2002/09/30 15:01:59 zolty Exp $ +$Id: todo.jcea,v 1.3 2002/11/09 14:52:54 zolty Exp $ + +17/Oct/02 +[11:42] <NiKoLaS> que al hacer un /invite te devuelva los canales donde estas invitado y aun no entraste? +[11:42] <NiKoLaS> esto seria sacado de undernet + +17/Oct/02 +[11:28] <NiKoLaS> En el whois se ha de poder ver el resumen de modos del usuario. Se mostraran +[11:28] <NiKoLaS> los mismos modos que en el WHO y se unificara la rutina que los calcula en +[11:28] <NiKoLaS> en WHO para poder llamarla desde el WHO y el WHOIS y evitar redundancias en +[11:28] <NiKoLaS> el codigo. + +16/Oct/02 +El modo +k debe saltarse tambien la limitacion de cambios +de nick y de TARGETS. + +10/Oct/02 +Pasar la tabla 'o' a FLAGS individuales. Osea, cada bit, un flag. + +10/Oct/02 +En el IRCD hay varias secciones marcadas como FIXME o con "#if 0" +y similares. Hacer limpieza de lo que sobre. + +01/Oct/02 +Hay datos en las estructuras que tienen un taman~o fijo elevado, +pero que no se suelen usar a tope. Ejemplos de ello son el +"topic" en los canales, o el "hostname" en los usuarios. + +Deberian usarse estructuras dinamicas. Evaluar conveniencia. 25/Sep/02 Ahora que se muestran los IRCops, Opers y Bots online, ver ----------------------- End of diff ----------------------- |