[IRC-DEV] Re: [IRC-DEV] ¿Inconsitencias en parche u2.10.H.05.71?
ZOLTAN
ZOLTAN at teleline.es
Sun Sep 29 20:52:04 CEST 2002
>
> QDuhs Target left IRC. Failed to deliver: [nope]
>
> "QDuhs"? Un saludo,
>
Reenvio de nuevo, que el anterior salio cortado.
QD es el numerico de du /*
* nickname addressed?
*/
if (MyUser(sptr) || Protocol(cptr) < 10)
acptr = FindUser(nick);
else if ((acptr = findNUser(nick)) && !IsUser(acptr))
acptr = NULL;
ne.irc-hispano.org....
La explicacion de el porque sale el numerico es que un nodo remoto,
cuando recibe un privmsg, recibe los nicks destino en formato NUMERICO,
y la variable "nick" no es el nick, sino numerico si viene de un nodo
P10.
/*
* nickname addressed?
*/
if (MyUser(sptr) || Protocol(cptr) < 10)
acptr = FindUser(nick);
else if ((acptr = findNUser(nick)) && !IsUser(acptr))
acptr = NULL;
Si es un usuario local o viene de un nodo remoto P09, la variable nick
contiene el nickname y si viene de un nodo P10, nick contiene el
NUMERICO ya que P10 maneja numericos en vez de nicks. Si existe el
usuario en la red, acptr contiene un puntero al aClient del usuario y
se entrega el mensaje al usuario. Y si acptr es NULL (es el nuestro
caso, de no existir el nick y por lo tanto no poder entregar un
mensaje) entonces hay que dar error ya que nunca llegara a destino.
Bien, mas abajo, hay un if (acptr) para los casos de exito y mas abajo
unos else para el caso de enviar un error, veamos:
else if (MyUser(sptr) || Protocol(cptr) < 10)
sendto_one(sptr, err_str(ERR_NOSUCHNICK), me.name, parv[0],
nick);
else
sendto_one(sptr,
":%s %d %s %s :Target left IRC. Failed to deliver: [%.50s]",
me.name, ERR_NOSUCHNICK, sptr->name, nick, parv[parc - 1]);
Si es un usuario local o viene de un servidor P09, como sabemos su
nick, se manda un mensaje de error. Pero si viene de un servidor P10,
no sabemos el nick que tenia, porque el usuario ya ha salido y no
tenemos datos ni nada, pues los de Undernet pusieron un "*" para
curarse en salud.
Ya me parecia a mi que el "*" estaba para algo, y siempre he dado la
razon a NiKoLaS de sus comentarios sobre la discusion que hubo sobre el
tema.
Si el autor del parche hubiera puesto un acptr->name en vez de nick con
la intencion de que saliera el nick en vez del numerico, pedazos CORE
DUMPS se verian en la red ;-)
Y por lo visto, se nota mucho que no ha probado el parche, porque
ademas en una red local es muy dificil de reproducir un caso asi por la
ausencia de lag que suelen tener las redes locales.
Un saludo
zoltan
More information about the IRC-Dev
mailing list