Author bra
Recipients bra
Date 2010-05-22.19:55:10
SpamBayes Score 7.63993e-07
Marked as misclassified No
Message-id <>
When talking to an Apache XML-RPC library based application via python 2.6.5 xmlrpclib, I get this exception:
Traceback (most recent call last):
  File "", line 4, in <module>
  File "/tmp/Python-2.6.5/Lib/", line 1199, in __call__
    return self.__send(self.__name, args)
  File "/tmp/Python-2.6.5/Lib/", line 1491, in __request
  File "/tmp/Python-2.6.5/Lib/", line 1253, in request
    return self._parse_response(h.getfile(), sock)
  File "/tmp/Python-2.6.5/Lib/", line 1389, in _parse_response
  File "/tmp/Python-2.6.5/Lib/", line 601, in feed
    self._parser.Parse(data, 0)
  File "/tmp/Python-2.6.5/Lib/", line 868, in end
    return f(self, join(self._data, ""))
  File "/tmp/Python-2.6.5/Lib/", line 935, in end_struct
    dict[_stringify(items[i])] = items[i+1]
IndexError: list index out of range

The exception is caused by the XML response, which includes a value with "ex:i8" type. According to this:, there are a lot more types, which are not understood by python's xmlrpclib.

It's easy to fix the above by adding "ex:i8" to the list of end_int dispatcher:
    def end_int(self, data):
        self._value = 0
    dispatch["i4"] = end_int
    dispatch["i8"] = end_int
    dispatch["ex:i8"] = end_int
    dispatch["int"] = end_int

This makes the error disappear (and the program to work).
Of course, it would be nice to support all other types as well (in both directions).
Date User Action Args
2010-05-22 19:55:15brasetrecipients: + bra
2010-05-22 19:55:14brasetmessageid: <>
2010-05-22 19:55:12bralinkissue8792 messages
2010-05-22 19:55:10bracreate