[IRC-DEV] ¿Inconsitencias_en_parche_u2.10.H.05.71?

Óscar García red_star23 at yahoo.es
Tue Oct 1 15:06:04 CEST 2002


De http://mailman.argo.es/pipermail/irc-dev/2002-September/001653.html
> Si alguien quiere probar si funciona que lo haga (debería hacerlo perfectamente).
> El único problema es que obviamos el motivo por el que el autor del original ircd
> decidió no indicar el nick. Posiblemente sea debido a que no debemos notificar
> nicks ya no existentes en la red (para evitar duplicados por retardos en la
> propagación de nicks en el caso de que simultáneamente entre el mismo nick por
> otro servidor) o por algún motivo justificado. Creo que sería una buena opción
> preguntar al autor porqué decidió no notificarlo.

Queda totalmente claro que aún no había leido en profundidad ese trozo de código. Ahora no os
puede caber duda de que sí lo he leido más concienzudamente.

De http://mailman.argo.es/pipermail/irc-dev/2002-September/001654.html
> Lo he comprobado, parece funcionar correctamente (en dos servidores conectados por
> ADSL). Uno de ellos no tenía la modificación hecha, pero en el que estaba el nick
> desaparecido SÍ (el que genera el error). No creo q exista motivo por el que no se
> incluyó el nick, ya que si el protocolo es inferior al 10 (P9 por ejemplo) se envía
> sin ningún problema el numeric con el nick.

Queda claro que porque en P9 se envían entre servidores nicks y es sencillo enviar el nick al que
no se le pudo entregar el mensaje obteniéndolo del propio mensaje original. En P10 esto no ocurre
ya que trabajamos con el numérico o identificador del nick en todo momento, y para acceder a su
nick original hay que buscarlo con un "acptr = findNUser(nick)", devolviendo NULL en caso de no
encontrarlo - por ejemplo cuando no se puede entregar al cliente el mensaje porque ha salido ya
del IRC, o porque era éste su servidor, o porque le ha llegado la propagación del QUIT y ha
borrado las estructuras de datos necesarias para decidir a través de qué servidor debe hacer
llegar el mensaje al cliente.

También comprueba que el mensaje sea enviado a un usuario con un "IsUser(acptr)" (en caso
contrario se trataría de un mensaje a un servidor). No confundir este con "MyUser(sptr)" que
comprueba si un cliente es local o no.

Creo que no he hablado aún (ni lo he hecho jamás) de dos servidores conectados a través de red
¿los que me hablan de ese tema siquiera han leido el correo? yo creo que antes de llamar mentiroso
a alguien hay que saber leer, y leer bien, y quizá hasta entender que una línea ADSL no es una red
local. ¿Cómo simular lag con una ADSL? quien no sepa hacerlo que me lo pregunte por privado, es un
tema off-topic y creo que cualquiera sabe hacerlo.

> ¿Lo incluimos como una modificación final? ¿Informamos al autor del ircu?

Antes de haber dado un paso propuse en el 1653 mirar porqué podría estar hecho así, y si era tan
secillo arreglarlo informar al autor original para saber sus motivos (que ahora son tan obvios,
pero en su momento nadie pareció verlos, excepto Rubén en
http://mailman.argo.es/pipermail/irc-dev/2002-September/001650.html , pero no llegó a
transmitirnos el mensaje y tampoco creo que en ese momento él viese el error de concepto que
llevaba yo). Qué casualidad que ahora cuando se sabe que envía el numérico TODO el mundo lo sabía
y nadie dijo nada en su momento.

> Si te paras a leer el codigo, veras que ese 'else if' corresponde al 'if
> (acptr)' anterior, osea, que NO es un cliente válido.
> con 'MyUser(sptr)' comprobamos que el origen del mensaje sea LOCAL, y con
> 'Protocol(cptr) < 10)' miramos si hemos de mandar el nick (para servidores P9)
> o el numeric (servidores P10). Entonces si el origen del mensaje no es local
> (!MyUser(sptr)) ni llega desde un servidor P10 !(Protocol(cptr) < 10), tenemos
> el caso de que el target ha salido de la red ANTES de que se le pudiera
> entregar el mensaje.

De http://mailman.argo.es/pipermail/irc-dev/2002-September/001649.html
> Cuando dispongas de tiempo yo particularmente no entiendo esto. Si
> obtengo un error de target no disponible, por su abandono de sesión,
> saber el nick a quien se lo iba a enviar es tan simple como ver a
> quién le he enviado el mensaje que no ha llegado. No se... no lo
> entiendo :/
> Saludos
> PD: A favor de ese parche, ais & jcea

Ahora espero que comprendas que el failer tu deliver se produce cuando es imposible procesar y
encaminar un mensaje que llega a un servidor por dos motivos, porque durante el tránsito un
servidor intermedio ya no tenga las estructuras de datos del cliente porque las ha limpiado tras
recibir un QUIT del servidor donde estaba originalmente el cliente (cruce de mensajes) o porque al
servidor en el que estaba el cliente le llega el mensaje cuando éste ya no está (básicamente es el
mismo en código, pero los humanos lo consideraríamos como dos casos distintos). Si en el servidor
local donde generamos el mensaje (origen del mensaje) no existen esas estructuras, simplemente nos
envían el 401 no suck nick.

De http://mailman.argo.es/pipermail/irc-dev/2002-September/001658.html
> Si no está el nick en ese momento, pues repetimos el MSG y le llegará por
> (posiblemente) otra ruta a su servidor de IRC sin efectos laterales sobre
> el enrutamiento de mensajes (no se altera ninguna tabla durante el viaje
> en sentido inverso del numeric hacia el origen).
> ¿Alguna proposición? ¿Me olvido de algún detalle?
> Yo lo tengo ya funcionando en una red de tres servidores (dos actualmente
> online) que por evitar publicidad no nombraré. Si noto algún error, fallo,
> o algo similar lo notificaré a la lista.

El problema no está en el viaje de vuelta del mensaje, si no en el hecho de que esas tablas (o
estructuras) ya no existen en el servidor que general el failed to deliver. Aún no se incluyó el
parche en el hispano.

Leer http://mailman.argo.es/pipermail/irc-dev/2002-September/001892.html antes de volver a hacer
referencia a que "se nota mucho que no ha probado el parche".

En http://mailman.argo.es/pipermail/irc-dev/2002-September/001668.html jcea notifica la inclusión
del parche en el hispano. Yo no le pedí en ningún momento que lo incluyese, pero no por eso voy a
quitarme yo responsabilidades. Fue responsabilidad mía no haber tenido tiempo para probarlo con
más cuidado, y haber tenido el detalle de fijarme en el numérico 401 y haber notado que no me
llegó un "target left irc" si no un "no suck nick", en otro mensaje ya expliqué eso
(http://mailman.argo.es/pipermail/irc-dev/2002-September/001892.html).

Si soy sincero, antes de sentirme feliz por tener un parche en el hispano, me entró pánico por el
poco tiempo que había tenido para pensarlo y para leer el código mejor (porque quería comprobar
porqué habían puesto el * si supuestamente tenía una solución tan "obvia").

De mis logs del IRC:
Session Start: Wed Sep 25 00:37:52 2002
[00:38] > QBej7 no está en el IRC
[00:38] > sabes? estoy por mirar de nuevo lo del parche
[00:38] > me ha mandado la mascara del nick
[00:39] > umm
[00:39] > nada, dejalo
[00:39] > el servidor donde estaba no esta actualizado
[00:39] > x)
[00:40] > no es por mi parche gracias a dios
[00:40] <jcea> :)
[00:40] > estaba por bigbang
[00:40] > 20 minutos de lag con el resto de la red
[00:40] > dios, ha sido desesperante
[00:40] > x)
[.....]

Ya anteriormente me había salido otro mensaje similar, pero comprobé la versión del servidor, era
la 69 si mal no recuerdo y no le dí importancia (pero ya me hizo pensar que necesitaba una
revisión urgente el parche). Ojalá todos tuviéramos todo el tiempo que deseamos para hacer lo que
queremos. Alguien que trabaja 8 horas al día, está de exámenes y demás, lo tiene "un poco"
limitado.

El problema no venía de mi propio servidor, si no de alguno intermedio que SÍ estaba actualizado y
me enviaba el nuevo target left irc.

Con esto no quiero darle responsabilidades a jcea, porque como dije en su momento, fue un
comentario, y aquí queda plasmado que así fue... un comentario. Yo mismo le quité importancia
porque aún no había visto ningún servidor actualizado con la nueva versión. Espero que nadie haya
entendido que cuando dije eso intenté quitarme el mochuelo de encima.

El resto de mensajes pueden verse en http://mailman.argo.es/pipermail/irc-dev/2002-September/

No quiero alargar el mensaje más de lo necesario. ¿A alguien le queda alguna duda? ¿alguien
seguirá con la paranoia del lag el redes locales? ¿ha quedado suficientemente claro que he tenido
un error, que he pedido disculpas? ¿ha quedado claro que entiendo ahora mucho mejor ese código
(además de conocer mejor el funcionamiento interno del protocolo P10)?

Espero que si alguien responde a este email se haya leido (detenidamente) el correo como sus
enlaces y que su respuesta sea constructiva (por ejemplo, una forma alternativa a conseguir el
nick original, aunque queda claro que es imposible en
http://mailman.argo.es/pipermail/irc-dev/2002-September/001894.html ).

Espero que este thread no se alargue más de lo necesario. Parece ser que los españoles somos los
más dados a darle poca importancia a los logros y resaltar exageradamente los fallos (a parte de
invertar cosas, acusar sin motivo e inventar argumentos para la acusación).

Un saludo. Yo la lección la tengo aprendida, espero que también os ayude a vosotros en un futuro.

--------------------------------------------------------------------------------
Remember: Un*x _IS_ user friendly... It's just selective about who it's friends are
http://redstar.linaresdigital.com/

_______________________________________________________________
Yahoo! Messenger
Nueva versión: Webcam, voz, y mucho más ¡Gratis! 
Descárgalo ya desde http://messenger.yahoo.es



More information about the IRC-Dev mailing list