On 27/07/2005, at 9:18 PM, Magnus Henoch wrote:

> Magnus Henoch <[EMAIL PROTECTED]> writes:
>
>> One of our users can't login to MSN with PyMSN 0.9.3.  The log says
>> this:
>>
>> 05/24/05 - 20:39:05 - MSNConnection: "[EMAIL PROTECTED]" initialised
>> 05/24/05 - 20:39:10 - LegacyConnection: 
>> "[EMAIL PROTECTED]" - loggedIn()
>> 05/24/05 - 20:39:10 - NotificationClient: "[EMAIL PROTECTED]" 
>> authenticated with MSN servers
>> 05/24/05 - 20:39:10 - Traceback (most recent call last):
>> 05/24/05 - 20:39:10 -   File 
>> "/usr/local/lib/python2.3/site-packages/twisted/internet/default.py", 
>> line 526, in doSelect
>> 05/24/05 - 20:39:10 -     _logrun(selectable, _drdw, selectable, 
>> method, dict)
>> 05/24/05 - 20:39:10 -   File 
>> "/usr/local/lib/python2.3/site-packages/twisted/python/log.py", line 
>> 65, in callWithLogger
>> 05/24/05 - 20:39:10 -     callWithContext({"system": lp}, func, 
>> *args, **kw)
>> 05/24/05 - 20:39:10 -   File 
>> "/usr/local/lib/python2.3/site-packages/twisted/python/log.py", line 
>> 52, in callWithContext
>> 05/24/05 - 20:39:10 -     return context.call({ILogContext: newCtx}, 
>> func, *args, **kw)
>> 05/24/05 - 20:39:11 -   File 
>> "/usr/local/lib/python2.3/site-packages/twisted/python/context.py", 
>> line 43, in callWithContext
>> 05/24/05 - 20:39:11 -     return func(*args,**kw)
>> 05/24/05 - 20:39:11 - --- <exception caught here> ---
>> 05/24/05 - 20:39:11 -   File 
>> "/usr/local/lib/python2.3/site-packages/twisted/internet/default.py", 
>> line 535, in _doReadOrWrite
>> 05/24/05 - 20:39:11 -     why = getattr(selectable, method)()
>> 05/24/05 - 20:39:11 -   File 
>> "/usr/local/lib/python2.3/site-packages/twisted/internet/tcp.py", 
>> line 255, in doRead
>> 05/24/05 - 20:39:11 -     return self.protocol.dataReceived(data)
>> 05/24/05 - 20:39:11 -   File 
>> "/usr/local/lib/python2.3/site-packages/twisted/protocols/basic.py", 
>> line 223, in dataReceived
>> 05/24/05 - 20:39:11 -     why = self.lineReceived(line)
>> 05/24/05 - 20:39:11 -   File 
>> "/jabber/src/PyMSNt-0.9.3/src/tlib/msn.py", line 652, in lineReceived
>> 05/24/05 - 20:39:11 -     try: handler(params.split())
>> 05/24/05 - 20:39:11 -   File 
>> "/jabber/src/PyMSNt-0.9.3/src/tlib/msn.py", line 884, in handle_LST
>> 05/24/05 - 20:39:11 -     lists=int(params[2]))
>> 05/24/05 - 20:39:11 - exceptions.ValueError: invalid literal for 
>> int(): .]%20Pansarbaskern%20i%20  go
>> 05/24/05 - 20:39:11 - NotificationClient: "[EMAIL PROTECTED]" lost 
>> connection with MSN servers
>
> I finally got around to debugging this.  The MSN server is sending the
> character '\x80' as part of the nickname, which Python's string.split
> interprets as whitespace.  The following patch seems to fix the
> problem:
>
> --- ../../PyMSNt-0.9.3/src/tlib/msn.py        Fri May 13 16:01:34 2005
> +++ src/tlib/msn.py   Wed Jul 27 13:10:29 2005
> @@ -649,10 +649,10 @@
>
>          handler = getattr(self, "handle_%s" % cmd.upper(), None)
>          if handler:
> -            try: handler(params.split())
> +            try: handler(params.split(' '))
>              except MSNProtocolError, why: self.gotBadLine(line, why)
>          else:
> -            self.handle_UNKNOWN(cmd, params.split())
> +            self.handle_UNKNOWN(cmd, params.split(' '))
>
>      def rawDataReceived(self, data):
>          extra = ""
>
> The patch assumes that space is the only valid delimiter for
> parameters.  Is that true?
>
> Are there other places where the same change needs to be done?
>
> Can this make it into PyMSN-t 0.9.4?
>
> Magnus

Great! Thanks. Yes, you're correct, space is the only delimiter.

I'll look through the rest of the code and see if I need to fix it 
elsewhere as well. Then I'll commit it tonight.

---

James

Reply via email to