Ayuda con error de inicialización.

Help
2007-09-04
2013-04-11
  • Hola Genios:

    Resulta que he bajado la versión msncp-0.7.0-beta y cada vez que ingreso el usuario y la contraseña, se genera el siguiente pantallazo y se sale de la aplicación:

    [root@userlinux msncp-0.7.0-beta]# ./msncp
    Traceback (most recent call last):
      File "./msncp", line 2703, in ?
        wrapper(main)
      File "./msncp", line 2643, in wrapper
        res = apply(func, (stdscr,) + rest)
      File "./msncp", line 2313, in main
        m.read(i)
      File "/root/aplicaciones/msncp-0.7.0-beta/msnlib.py", line 680, in read
        self.cb.msg(self, type, params, msg, nd)
      File "./msncp", line 734, in cb_msg
        value = tv[1].strip()
    IndexError: list index out of range
    [root@userlinux msncp-0.7.0-beta]#

    La verdad es que no sé mucho de linux y no entiendo cual puede ser el problema... es por esto que recurro a su buena voluntad.

    Agradezco cualquier ayuda al respecto.

     
    • Hola;

      Me es dificil darte una solución estricta dado que el error a mí no me aparece. Por el lugar en el cual está tirando la excepción evidentemente los HTTP headers que te está enviando el servidor están viniendo mal formados.

      Puedo ofrecerte un hack que prevendría que la aplicación crasheara al recibir un header malformado.

      En las lineas que arrancan más o menos en la 729 tenés este código:

      ###############################################
              for i in lines:
                      # end of headers
                      if not i:
                              break
                      tv = i.split(':', 1)
                      type = tv[0]
                      value = tv[1].strip()
                      headers[type] = value
                      eoh += 1
      ###############################################

      Reemplazalo por:

      ###############################################
              for i in lines:
                      # end of headers
                      if not i:
                              break
                      try:
                              tv = i.split(':', 1)
                              type = tv[0]
                              value = tv[1].strip()
                              headers[type] = value
                      except: pass
                      eoh += 1
              eoh +=1
      ###############################################

      Con eso, si bien no se arregla el problema del servidor, se debería prevenir la rotura del cliente.

      Saludos;
      Sebastián Santisi.

       
    • Veo que esto no preserva los espacios; el reemplazo sería:

      ###############################################
      ........for i in lines:
      ................# end of headers
      ................if not i:
      ........................break
      ................try:
      ........................tv = i.split(':', 1)
      ........................type = tv[0]
      ........................value = tv[1].strip()
      ........................headers[type] = value
      ................except: pass
      ................eoh += 1
      ###############################################

       
    • Eureka Sebastian:

      Muchas gracias por tu ayuda, pues con la modificación que me sugeriste se ha solucionado al parecer el problema.  Muchas gracias de nuevo!!!