[IPv6 IRC-DEV] [CVS] Module ipv6: Change committed
Brought to you by:
zolty
From: Toni G. <zo...@us...> - 2002-12-17 16:17:08
|
CVSROOT : /cvsroot/irc-dev Module : ipv6 Commit time: 2002-12-17 16:17:04 UTC Modified files: .patches CAMBIOS.Ipv6 CAMBIOS2_10_H_06 Makefile.in todo.jcea include/numeric.h include/patchlevel.h include/s_bsd.h include/struct.h ircd/channel.c ircd/ircd.c ircd/res.c ircd/s_auth.c ircd/s_bsd.c ircd/s_err.c ircd/s_socks.c ircd/s_user.c Added files: ircd/crypt/.cvsignore Log message: Sincronizacion u2.10.H.06.28 ---------------------- diff included ---------------------- Index: ipv6/.patches diff -u ipv6/.patches:1.3 ipv6/.patches:1.4 --- ipv6/.patches:1.3 Sat Nov 9 06:52:54 2002 +++ ipv6/.patches Tue Dec 17 08:16:48 2002 @@ -1 +1 @@ -u2.10.H.06.13 +u2.10.H.06.28 Index: ipv6/CAMBIOS.Ipv6 diff -u ipv6/CAMBIOS.Ipv6:1.13 ipv6/CAMBIOS.Ipv6:1.14 --- ipv6/CAMBIOS.Ipv6:1.13 Tue Dec 17 02:40:57 2002 +++ ipv6/CAMBIOS.Ipv6 Tue Dec 17 08:16:48 2002 @@ -1,3 +1,7 @@ +* 2002/12/17 zo...@ir... INET6.14 +----------------------------------------------------------------------- +Actualizacion IRCD hasta el u2.10.H.06.28. + * 2002/12/17 zo...@ir... INET6.13 ----------------------------------------------------------------------- Compila con VIRTUAL_HOST y PROXY_PROTECTION activados y desactivados :) Index: ipv6/CAMBIOS2_10_H_06 diff -u ipv6/CAMBIOS2_10_H_06:1.1 ipv6/CAMBIOS2_10_H_06:1.2 --- ipv6/CAMBIOS2_10_H_06:1.1 Sat Nov 9 06:52:54 2002 +++ ipv6/CAMBIOS2_10_H_06 Tue Dec 17 08:16:48 2002 @@ -1,4 +1,103 @@ -$Id: CAMBIOS2_10_H_06,v 1.1 2002/11/09 14:52:54 zolty Exp $ +$Id: CAMBIOS2_10_H_06,v 1.2 2002/12/17 16:16:48 zolty Exp $ + +* 2002/12/16 jc...@ar... (u2.10.H.06.28) FEATURE + ----------------------------------------------------------------------- + Se toca la funcion "can_send()" para que un nodo pueda enviar a un + canal. Antes no se podia hacer si el canal estaba +n. + +* 2002/12/16 jc...@ar... (u2.10.H.06.27) FEATURE + ----------------------------------------------------------------------- + Cuando se invita a alguien a un canal, lo ven los "ops" de dicho canal. + +* 2002/12/15 n3...@9p... (u2.10.H.06.26) FEATURE + ----------------------------------------------------------------------- + Primera parte del parche para permitir el uso del caracter '~' en los + nicks. Permitimos nicks con '~' de otros servidores, pero no locales. + +* 2002/12/12 jc...@ar... (u2.10.H.06.25) FIX + ----------------------------------------------------------------------- + Bajo circunstancias poco claras, y si tenemos el servidor configurado + para que use "poll()" en vez de "select()" (lo normal), puede darse + el caso de intentar hacer un + + if (DoingSocks(cptr) || DoingDNS(cptr) || DoingAuth(cptr) + + de conexiones NO locales, con lo que fallan los "assert()". Es algo muy + esporadico (en Gaia, cada 24 horas de funcionamiento), pero que + "ocurre". + + Esto, en realidad, es un bug del IRCD original, pero que no se ha + "detectado" hasta ahora. + +* 2002/12/11 ni...@ir... (u2.10.H.06.24) FIX + ----------------------------------------------------------------------- + Si se hace in INVITE a un canal inexistente, se devuelve el error de + "No such channel" en vez del de "You're not on that channel". + +* 2002/12/11 jc...@ar... (u2.10.H.06.23) FIX + ----------------------------------------------------------------------- + Se solucionan un par de detalles cuestionables del parche anterior. + +* 2002/12/11 zo...@ir... (u2.10.H.06.22) FEATURE + ----------------------------------------------------------------------- + Ampliacion del comando INVITE. Si se invoca sin parametros, nos muestra + la lista de invitaciones que tenemos y que no hemos usado todavia para + entrar. Esta lista siempre ha existido y hasta ahora no era visible. + + Se utilizan los siguientes numericos, utilizados en Undernet. + 346 => RPL_INVITELIST + 347 => RPL_ENDOFINVITELIST + +* 2002/12/10 jc...@ar... (u2.10.H.06.21) CLEANUP + ----------------------------------------------------------------------- + "IsLocal()" y "MyConnect()" son redundantes. Ademas, "IsLocal()" no + funciona correctamente en los primeros instantes de una conexion. + + Elimino "IsLocal()". + +* 2002/12/10 jc...@ar... (u2.10.H.06.20) FIX + ----------------------------------------------------------------------- + Cuando se configura el IRCD para que se ejecute bajo un usuario/grupo, + el grupo no se configuraba correctamente. + +* 2002/12/09 jc...@ar... (u2.10.H.06.19) CLEANUP + ----------------------------------------------------------------------- + Cambio "s_auth.c" para que use macros en la manipulacion de + "FLAGS_AUTH" y "FLAGS_WRAUTH". + +* 2002/12/09 jc...@ar... (u2.10.H.06.18) CLEANUP + ----------------------------------------------------------------------- + Aprovechando el parche "u2.10.H.06.15", migro el flag "FLAGS_WRAUTH". + +* 2002/12/09 jc...@ar... (u2.10.H.06.17) CLEANUP + ----------------------------------------------------------------------- + Aprovechando el parche "u2.10.H.06.15", migro el flag "FLAGS_AUTH". + +* 2002/12/09 jc...@ar... (u2.10.H.06.16) CLEANUP + ----------------------------------------------------------------------- + Aprovechando el parche "u2.10.H.06.15", migro el flag "FLAGS_DOINGDNS". + + En el "assert()" uso "MyConnect()", porque "IsLocal()" no esta + inicializado aun... + +* 2002/12/09 jc...@ar... (u2.10.H.06.15) CLEANUP + ----------------------------------------------------------------------- + La variable de "flags" ya tiene ocupados sus 32 bits. En vez de utilizar + una variable de 64 bits, divido los "flags" en dos grupos de 32 bits. + Un grupo, el actual, existe siempre. El otro grupo de 32 bits SOLO + existira para conexiones LOCALES. + + De esta forma se reduce el consumo de memoria, ya que las conexiones + remotas usan 32 bits, en vez de 64 bits. + + Hay que ir migrando los flags poco a poco, uno a uno. Hay que usar + "assert()" (de forma temporal) para comprobar que se accede + a ese "flag" **SOLO** cuando el usuario es local. + +* 2002/12/04 ni...@ir... (u2.10.H.06.14) FEATURE + ----------------------------------------------------------------------- + Si un usuario sin +r hace un INVITE a un usuario +R no se lo permite. + Si el usuario que hace el INVITE, por contra, tiene +o, si le deja. * 2002/10/22 jc...@ar... (u2.10.H.06.13) FIX ----------------------------------------------------------------------- Index: ipv6/Makefile.in diff -u ipv6/Makefile.in:1.4 ipv6/Makefile.in:1.5 --- ipv6/Makefile.in:1.4 Mon Sep 30 08:01:59 2002 +++ ipv6/Makefile.in Tue Dec 17 08:16:49 2002 @@ -126,6 +126,6 @@ # Indent all headers and source files: indent: - @test "`indent --version`" = "GNU indent 2.2.8" || \ - (echo "You need GNU indent 2.2.8a; See doc/readme.indent" && exit -1); + @test "`indent --version`" = "GNU indent 2.2.7" || \ + (echo "You need GNU indent 2.2.7; See doc/readme.indent" && exit -1); VERSION_CONTROL=none indent include/*.h ircd/*.c Index: ipv6/include/numeric.h diff -u ipv6/include/numeric.h:1.3 ipv6/include/numeric.h:1.4 --- ipv6/include/numeric.h:1.3 Mon Sep 30 08:02:00 2002 +++ ipv6/include/numeric.h Tue Dec 17 08:16:50 2002 @@ -16,7 +16,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: numeric.h,v 1.3 2002/09/30 15:02:00 zolty Exp $ + * $Id: numeric.h,v 1.4 2002/12/17 16:16:50 zolty Exp $ */ #ifndef NUMERIC_H @@ -277,8 +277,8 @@ /* RPL_SUMMONING 342 removed from RFC1459 */ #define RPL_MSGONLYREG 342 /* Hispano extension */ -/* RPL_INVITELIST 346 IRCnet & Undernet extension */ -/* RPL_ENDOFINVITELIST 347 IRCnet & Undernet extension */ +#define RPL_INVITELIST 346 /* IRCnet & Undernet extension */ +#define RPL_ENDOFINVITELIST 347 /* IRCnet & Undernet extension */ /* RPL_EXCEPTLIST 348 IRCnet extension */ /* RPL_ENDOFEXCEPTLIST 349 IRCnet extension */ Index: ipv6/include/patchlevel.h diff -u ipv6/include/patchlevel.h:1.14 ipv6/include/patchlevel.h:1.15 --- ipv6/include/patchlevel.h:1.14 Tue Dec 17 02:40:58 2002 +++ ipv6/include/patchlevel.h Tue Dec 17 08:16:50 2002 @@ -49,7 +49,7 @@ \ \ \ - "+INET6.13" + "+INET6.14" /* * Deliberate empty lines Index: ipv6/include/s_bsd.h diff -u ipv6/include/s_bsd.h:1.5 ipv6/include/s_bsd.h:1.6 --- ipv6/include/s_bsd.h:1.5 Mon Sep 30 08:02:00 2002 +++ ipv6/include/s_bsd.h Tue Dec 17 08:16:50 2002 @@ -20,10 +20,6 @@ #define FLAGS_CLOSING 0x0400 /* set when closing to suppress errors */ #define FLAGS_LISTEN 0x0800 /* used to mark clients which we listen() on */ #define FLAGS_CHKACCESS 0x1000 /* ok to check clients access if set */ -#define FLAGS_DOINGDNS 0x2000 /* client is waiting for a DNS response */ -#define FLAGS_AUTH 0x4000 /* client is waiting on rfc931 response */ -#define FLAGS_WRAUTH 0x8000 /* set if we havent writen to ident server */ -#define FLAGS_LOCAL 0x00010000 /* set for local clients */ #define FLAGS_GOTID 0x00020000 /* successful ident lookup achieved */ #define FLAGS_DOID 0x00040000 /* I-lines say must use ident return */ #define FLAGS_NONL 0x00080000 /* No \n in buffer */ @@ -42,6 +38,13 @@ #define MODE_ISWATCH 0x80000000 /* Se enviara WATCH para este nick */ +/* Flags LOCALES */ +#define FLAGS_DOINGDNS 0x00002000 /* client is waiting for a DNS response */ +#define FLAGS_AUTH 0x00004000 /* client is waiting on rfc931 response */ +#define FLAGS_WRAUTH 0x00008000 /* set if we havent writen to ident server */ + + + #define SEND_UMODES \ (FLAGS_INVISIBLE|FLAGS_OPER|FLAGS_WALLOP|FLAGS_DEAF|FLAGS_CHSERV|FLAGS_DEBUG) @@ -64,7 +67,6 @@ #define IsUnixSocket(x) ((x)->flags & FLAGS_UNIX) #define IsListening(x) ((x)->flags & FLAGS_LISTEN) #define DoAccess(x) ((x)->flags & FLAGS_CHKACCESS) -#define IsLocal(x) ((x)->flags & FLAGS_LOCAL) #define IsDead(x) ((x)->flags & FLAGS_DEADSOCKET) #define IsJunction(x) ((x)->flags & FLAGS_JUNCTION) #define IsBurst(x) ((x)->flags & FLAGS_BURST) @@ -80,10 +82,13 @@ #define SetWallops(x) ((x)->flags |= FLAGS_WALLOP) #define SetDebug(x) ((x)->flags |= FLAGS_DEBUG) #define SetUnixSock(x) ((x)->flags |= FLAGS_UNIX) -#define SetDNS(x) ((x)->flags |= FLAGS_DOINGDNS) -#define DoingDNS(x) ((x)->flags & FLAGS_DOINGDNS) +#define SetDNS(x) (assert(MyConnect(x)),((x)->flags_local |= FLAGS_DOINGDNS)) +#define DoingDNS(x) (assert(MyConnect(x)),((x)->flags_local & FLAGS_DOINGDNS)) +#define SetAuth(x) (assert(MyConnect(x)),((x)->flags_local |= FLAGS_AUTH)) +#define SetWRAuth(x) (assert(MyConnect(x)),((x)->flags_local |= FLAGS_WRAUTH)) #define SetAccess(x) ((x)->flags |= FLAGS_CHKACCESS) -#define DoingAuth(x) ((x)->flags & FLAGS_AUTH) +#define DoingAuth(x) (assert(MyConnect(x)),((x)->flags_local & FLAGS_AUTH)) +#define DoingWRAuth(x) (assert(MyConnect(x)),((x)->flags_local & FLAGS_WRAUTH)) #define NoNewLine(x) ((x)->flags & FLAGS_NONL) #define DoPing(x) ((x)->flags & FLAGS_PING) #define SetAskedPing(x) ((x)->flags |= FLAGS_ASKEDPING) @@ -100,8 +105,9 @@ #define ClearInvisible(x) ((x)->flags &= ~FLAGS_INVISIBLE) #define ClearWallops(x) ((x)->flags &= ~FLAGS_WALLOP) #define ClearDebug(x) ((x)->flags &= ~FLAGS_DEBUG) -#define ClearDNS(x) ((x)->flags &= ~FLAGS_DOINGDNS) -#define ClearAuth(x) ((x)->flags &= ~FLAGS_AUTH) +#define ClearDNS(x) (assert(MyConnect(x)),((x)->flags_local &= ~FLAGS_DOINGDNS)) +#define ClearAuth(x) (assert(MyConnect(x)),((x)->flags_local &= ~FLAGS_AUTH)) +#define ClearWRAuth(x) (assert(MyConnect(x)),((x)->flags_local &= ~FLAGS_WRAUTH)) #define ClearAccess(x) ((x)->flags &= ~FLAGS_CHKACCESS) #define ClearPing(x) ((x)->flags &= ~FLAGS_PING) #define ClearAskedPing(x) ((x)->flags &= ~FLAGS_ASKEDPING) Index: ipv6/include/struct.h diff -u ipv6/include/struct.h:1.3 ipv6/include/struct.h:1.4 --- ipv6/include/struct.h:1.3 Thu Sep 12 12:02:14 2002 +++ ipv6/include/struct.h Tue Dec 17 08:16:50 2002 @@ -150,6 +150,8 @@ char sockhost[HOSTLEN + 1]; /* This is the host name from the socket and after which the connection was accepted. */ char passwd[PASSWDLEN + 1]; + + unsigned int flags_local; /* Local client flags */ }; struct Server { Index: ipv6/ircd/channel.c diff -u ipv6/ircd/channel.c:1.7 ipv6/ircd/channel.c:1.8 --- ipv6/ircd/channel.c:1.7 Sat Nov 9 06:52:54 2002 +++ ipv6/ircd/channel.c Tue Dec 17 08:16:51 2002 @@ -48,7 +48,7 @@ #include "sprintf_irc.h" #include "querycmds.h" -RCSTAG_CC("$Id: channel.c,v 1.7 2002/11/09 14:52:54 zolty Exp $"); +RCSTAG_CC("$Id: channel.c,v 1.8 2002/12/17 16:16:51 zolty Exp $"); aChannel *channel = NullChn; @@ -544,7 +544,7 @@ Reg1 Link *lp; int flag; - if ((IsChannelService(cptr)) + if (IsChannelService(cptr) || IsServer(cptr) #if defined(BDD) || (IsServicesBot(cptr)) #endif @@ -4442,7 +4442,7 @@ if (!topic) /* only asking for topic */ { - if (chptr->topic) + if (!chptr->topic) sendto_one(sptr, rpl_str(RPL_NOTOPIC), me.name, parv[0], chptr->chname); else { @@ -4527,6 +4527,23 @@ aClient *acptr; aChannel *chptr; + if (parc < 2) + { + Link *lp; + /* + * Listar los canales donde tienes invitacion + * -zoltan + */ + + assert(MyUser(sptr)); + + for (lp = sptr->user->invited; lp; lp = lp->next) + sendto_one(sptr, rpl_str(RPL_INVITELIST), me.name, sptr->name, + lp->value.chptr->chname); + sendto_one(sptr, rpl_str(RPL_ENDOFINVITELIST), me.name, sptr->name); + return 0; + } + if (parc < 3 || *parv[2] == '\0') { sendto_one(sptr, err_str(ERR_NEEDMOREPARAMS), me.name, parv[0], "INVITE"); @@ -4546,6 +4563,13 @@ return 0; } + if (MyUser(sptr) && IsMsgOnlyReg(acptr) && !IsNickRegistered(sptr) + && !IsAnOper(sptr)) + { + sendto_one(sptr, err_str(ERR_NONONREG), me.name, parv[0], acptr->name); + return 0; + } + if (MyUser(sptr)) clean_channelname(parv[2]); else if (IsLocalChannel(parv[2])) @@ -4640,7 +4664,15 @@ } if (MyConnect(acptr)) + { add_invite(acptr, chptr); + sendto_lchanops_butone(&me, &me, chptr, + ":%s NOTICE @%s :%s invited %s into channel %s", me.name, parv[2], + parv[0], acptr->name, parv[2]); + sendto_chanopsserv_butone(&me, &me, chptr, + ":%s WC %s :%s invited %s into channel %s", me.name, parv[2], parv[0], + acptr->name, parv[2]); + } sendto_prefix_one(acptr, sptr, ":%s INVITE %s :%s", parv[0], acptr->name, chptr->chname); Index: ipv6/ircd/crypt/.cvsignore diff -u /dev/null ipv6/ircd/crypt/.cvsignore:1.1 --- /dev/null Tue Dec 17 08:17:05 2002 +++ ipv6/ircd/crypt/.cvsignore Tue Dec 17 08:16:54 2002 @@ -0,0 +1,2 @@ +mkpasswd +.* \ No newline at end of file Index: ipv6/ircd/ircd.c diff -u ipv6/ircd/ircd.c:1.4 ipv6/ircd/ircd.c:1.5 --- ipv6/ircd/ircd.c:1.4 Mon Sep 16 05:22:13 2002 +++ ipv6/ircd/ircd.c Tue Dec 17 08:16:51 2002 @@ -46,8 +46,9 @@ #ifdef CHROOTDIR #include <resolv.h> #endif -#ifdef VIRTUAL_HOST -#endif + +#include <assert.h> + #include "h.h" #include "res.h" #include "struct.h" @@ -72,7 +73,7 @@ #include "s_bdd.h" #include "inet.h" -RCSTAG_CC("$Id: ircd.c,v 1.4 2002/09/16 12:22:13 zolty Exp $"); +RCSTAG_CC("$Id: ircd.c,v 1.5 2002/12/17 16:16:51 zolty Exp $"); extern void init_counters(void); @@ -766,8 +767,8 @@ /* run as a specified user */ fprintf(stderr, "WARNING: running ircd with uid = %d\n", IRC_UID); fprintf(stderr, " changing to gid %d.\n", IRC_GID); - setuid(IRC_UID); setgid(IRC_GID); + setuid(IRC_UID); #else /* check for setuid root as usual */ fprintf(stderr, Index: ipv6/ircd/res.c diff -u ipv6/ircd/res.c:1.5 ipv6/ircd/res.c:1.6 --- ipv6/ircd/res.c:1.5 Mon Sep 16 08:47:29 2002 +++ ipv6/ircd/res.c Tue Dec 17 08:16:51 2002 @@ -17,6 +17,9 @@ #if !defined(dn_skipname) && !defined(__dn_skipname) extern int dn_skipname(const unsigned char *, const unsigned char *); #endif + +#include <assert.h> + #include "h.h" #include "res.h" #include "struct.h" @@ -32,7 +35,7 @@ #include "sprintf_irc.h" #include "inet.h" -RCSTAG_CC("$Id: res.c,v 1.5 2002/09/16 15:47:29 zolty Exp $"); +RCSTAG_CC("$Id: res.c,v 1.6 2002/12/17 16:16:51 zolty Exp $"); #define MAXPACKET 1024 Index: ipv6/ircd/s_auth.c diff -u ipv6/ircd/s_auth.c:1.4 ipv6/ircd/s_auth.c:1.5 --- ipv6/ircd/s_auth.c:1.4 Thu Sep 12 12:19:00 2002 +++ ipv6/ircd/s_auth.c Tue Dec 17 08:16:52 2002 @@ -36,6 +36,9 @@ #ifdef USE_SYSLOG #include <syslog.h> #endif + +#include <assert.h> + #include "h.h" #include "res.h" #include "struct.h" @@ -49,7 +52,7 @@ #include "s_auth.h" #include "sprintf_irc.h" -RCSTAG_CC("$Id: s_auth.c,v 1.4 2002/09/12 19:19:00 zolty Exp $"); +RCSTAG_CC("$Id: s_auth.c,v 1.5 2002/12/17 16:16:52 zolty Exp $"); #define IDENT_START ":%s NOTICE IDENT_LOOKUP :*** Checking Ident\r\n" #define IDENT_OK ":%s NOTICE IDENT_LOOKUP :*** Got ident response\r\n" @@ -170,7 +173,8 @@ return; } alarm((unsigned)0); - cptr->flags |= (FLAGS_WRAUTH | FLAGS_AUTH); + SetAuth(cptr); + SetWRAuth(cptr); if (cptr->authfd > highest_fd) highest_fd = cptr->authfd; return; @@ -218,7 +222,8 @@ while (!loc_clients[highest_fd]) highest_fd--; cptr->authfd = -1; - cptr->flags &= ~FLAGS_AUTH; + + ClearAuth(cptr); if (IsUserPort(cptr)) { @@ -233,7 +238,7 @@ #endif /* PROXY_PROTECTION */ SetAccess(cptr); } - cptr->flags &= ~FLAGS_WRAUTH; + ClearWRAuth(cptr); return; } Index: ipv6/ircd/s_bsd.c diff -u ipv6/ircd/s_bsd.c:1.7 ipv6/ircd/s_bsd.c:1.8 --- ipv6/ircd/s_bsd.c:1.7 Tue Dec 17 02:40:58 2002 +++ ipv6/ircd/s_bsd.c Tue Dec 17 08:16:52 2002 @@ -58,6 +58,9 @@ #endif #include <sys/utsname.h> #include <resolv.h> + +#include <assert.h> + #include "h.h" #include "res.h" #include "struct.h" @@ -97,7 +100,7 @@ #include "msg.h" #endif -RCSTAG_CC("$Id: s_bsd.c,v 1.7 2002/12/17 10:40:58 zolty Exp $"); +RCSTAG_CC("$Id: s_bsd.c,v 1.8 2002/12/17 16:16:52 zolty Exp $"); #define IP_LOOKUP_START ":%s NOTICE IP_LOOKUP :*** Looking up your hostname...\r\n" #define IP_LOOKUP_OK ":%s NOTICE IP_LOOKUP :*** Found your hostname.\r\n" @@ -312,7 +315,7 @@ server.SIN_FAMILY = AFINET; #ifndef VIRTUAL_HOST #ifdef INET6 - memset(server.SIN_ADDR.S_ADDR, 0x0, sizeof(struct IN_ADDR)); + memset(server.SIN_ADDR.S_ADDR, 0x0, sizeof(struct IN_ADDR)); #else server.SIN_ADDR.S_ADDR = INADDR_ANY; #endif @@ -695,14 +698,16 @@ */ enum AuthorizationCheckResult check_client(aClient *cptr) { +#if defined(BDD) char buf[HOSTLEN + 1 + 1024]; char host_buf[HOSTLEN + 1]; int num_clones = -1; int iline = 0; struct db_reg *reg; + Reg3 const char *hname; +#endif static char sockname[HOSTLEN + 1]; Reg2 struct hostent *hp = NULL; - Reg3 const char *hname; Reg3 int i; enum AuthorizationCheckResult acr; @@ -834,7 +839,6 @@ #endif { ircstp->is_loc++; - cptr->flags |= FLAGS_LOCAL; } return ACR_OK; } @@ -1858,7 +1862,7 @@ auth++; Debug((DEBUG_NOTICE, "auth on %p %d", cptr, i)); RFD_SET(cptr->authfd, &read_set, currfd_index, cptr); - if (cptr->flags & FLAGS_WRAUTH) + if (DoingWRAuth(cptr)) RWFD_SET(cptr->authfd, &write_set, currfd_index); } #ifdef PROXY_PROTECTION @@ -2149,11 +2153,12 @@ if (!(cptr = LOC_CLIENTS(i)) || IsMe(cptr)) continue; #ifdef USE_POLL + if (!(cptr = loc_clients[LOC_FD(i)])) + continue; #ifdef PROXY_PROTECTION - if (DoingSocks(cptr) || DoingDNS(cptr) || DoingAuth(cptr) - || !(cptr = loc_clients[LOC_FD(i)])) + if (DoingSocks(cptr) || DoingDNS(cptr) || DoingAuth(cptr)) #else - if (DoingDNS(cptr) || DoingAuth(cptr) || !(cptr = loc_clients[LOC_FD(i)])) + if (DoingDNS(cptr) || DoingAuth(cptr)) #endif /* PROXY_PROTECTION */ continue; #endif /* USE_POLL */ @@ -2652,8 +2657,8 @@ #ifdef VIRTUAL_HOST #ifdef INET6 memset(from.SIN_ADDR.S_ADDR, 0x0, sizeof(struct IN_ADDR)); - /* provisional, tiene que ser una copia */ - /* FIXME-ZOLTAN */ + /* provisional, tiene que ser una copia */ + /* FIXME-ZOLTAN */ #else from.SIN_ADDR = vserv.SIN_ADDR; #endif Index: ipv6/ircd/s_err.c diff -u ipv6/ircd/s_err.c:1.3 ipv6/ircd/s_err.c:1.4 --- ipv6/ircd/s_err.c:1.3 Sat Nov 9 06:52:54 2002 +++ ipv6/ircd/s_err.c Tue Dec 17 08:16:52 2002 @@ -24,7 +24,7 @@ #include "sprintf_irc.h" #include "m_watch.h" -RCSTAG_CC("$Id: s_err.c,v 1.3 2002/11/09 14:52:54 zolty Exp $"); +RCSTAG_CC("$Id: s_err.c,v 1.4 2002/12/17 16:16:52 zolty Exp $"); typedef struct { int num_val; @@ -442,9 +442,9 @@ /* 345 */ {0, (char *)NULL}, /* 346 */ - {0, (char *)NULL}, + {RPL_INVITELIST, ":%s"}, /* 347 */ - {0, (char *)NULL}, + {RPL_ENDOFINVITELIST, ":End of Invite List"}, /* 348 */ {0, (char *)NULL}, /* 349 */ Index: ipv6/ircd/s_socks.c diff -u ipv6/ircd/s_socks.c:1.4 ipv6/ircd/s_socks.c:1.5 --- ipv6/ircd/s_socks.c:1.4 Tue Dec 17 02:40:58 2002 +++ ipv6/ircd/s_socks.c Tue Dec 17 08:16:53 2002 @@ -40,6 +40,8 @@ #include <pwd.h> #include <sys/types.h> +#include <assert.h> + #include "h.h" #include "res.h" #include "struct.h" @@ -60,7 +62,7 @@ #ifdef PROXY_PROTECTION -RCSTAG_CC("$Id: s_socks.c,v 1.4 2002/12/17 10:40:58 zolty Exp $"); +RCSTAG_CC("$Id: s_socks.c,v 1.5 2002/12/17 16:16:53 zolty Exp $"); #define PROXY_START ":%s NOTICE SOCKS4 :*** Checking WinGate/SocksProxy security...\r\n" #define PROXY_PASS ":%s NOTICE SOCKS4 :*** Proxy test passed.\r\n" Index: ipv6/ircd/s_user.c diff -u ipv6/ircd/s_user.c:1.8 ipv6/ircd/s_user.c:1.9 --- ipv6/ircd/s_user.c:1.8 Sat Nov 9 06:52:54 2002 +++ ipv6/ircd/s_user.c Tue Dec 17 08:16:53 2002 @@ -69,7 +69,7 @@ #include "IPcheck.h" #include "class.h" -RCSTAG_CC("$Id: s_user.c,v 1.8 2002/11/09 14:52:54 zolty Exp $"); +RCSTAG_CC("$Id: s_user.c,v 1.9 2002/12/17 16:16:53 zolty Exp $"); /* *INDENT-OFF* */ @@ -953,7 +953,6 @@ aClient *acptr; aClient *server = NULL; char nick[NICKLEN + 2]; - char *s; Link *lp; time_t lastnick = (time_t) 0; int differ = 1; @@ -1010,8 +1009,6 @@ sendto_ops("bad NICK param count for %s from %s", parv[1], cptr->name); return 0; } - if (MyConnect(sptr) && (s = strchr(parv[1], '~'))) - *s = '\0'; strncpy(nick, parv[1], NICKLEN + 1); nick[sizeof(nick) - 1] = 0; @@ -1021,7 +1018,8 @@ * creation) then reject it. If from a server and we reject it, * and KILL it. -avalon 4/4/92 */ - if (do_nick_name(nick) == 0 || (IsServer(cptr) && strcmp(nick, parv[1]))) + if (do_nick_name(nick) == 0 || (IsServer(cptr) && strcmp(nick, parv[1])) + || (!IsServer(cptr) && strchr(nick, '~'))) { sendto_one(sptr, err_str(ERR_INVALIDNICKNAME), me.name, parv[0], parv[1]); Index: ipv6/todo.jcea diff -u ipv6/todo.jcea:1.3 ipv6/todo.jcea:1.4 --- ipv6/todo.jcea:1.3 Sat Nov 9 06:52:54 2002 +++ ipv6/todo.jcea Tue Dec 17 08:16:49 2002 @@ -1,4 +1,27 @@ -$Id: todo.jcea,v 1.3 2002/11/09 14:52:54 zolty Exp $ +$Id: todo.jcea,v 1.4 2002/12/17 16:16:49 zolty Exp $ + +16/Dic/02 +Los "invites" deberian estar en la parte local +de los clientes, ya que solo se guardan los invites +de los usuarios propios. + +14/Dic/02 +Dentro de un an~o volver a considerar la opcion de que la tabla +de "watch" se guarde en la red, en vez de en el cliente. + +Puedes ser util para usaurios que se conectan desde diferentes +sitios, o para cubrir la deficiencia del mIRC, que no separa +los "notify" por redes. + +14/Dic/02 +Dentro de un an~o, volver a considerar el comando "/knock", que +manda un aviso a los operadores de un canal con acceso restringido. + +10/Dic/02 +Meditar sobre la conveniencia de migrar las estructuras de compresion +a "servidores", en vez de a "conexiones locales". Ello ahorraria memoria, +aunque comprometeria la posibilidad futura de soportar compresion +con los usuarios. 17/Oct/02 [11:42] <NiKoLaS> que al hacer un /invite te devuelva los canales donde estas invitado y aun no entraste? ----------------------- End of diff ----------------------- |