New submission from Attila Nagy <b...@fsn.hu>:

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 "prb.py", line 4, in <module>
    proxy.catv.getEndpointIdByIp('1.1.1.1')
  File "/tmp/Python-2.6.5/Lib/xmlrpclib.py", line 1199, in __call__
    return self.__send(self.__name, args)
  File "/tmp/Python-2.6.5/Lib/xmlrpclib.py", line 1491, in __request
    verbose=self.__verbose
  File "/tmp/Python-2.6.5/Lib/xmlrpclib.py", line 1253, in request
    return self._parse_response(h.getfile(), sock)
  File "/tmp/Python-2.6.5/Lib/xmlrpclib.py", line 1389, in _parse_response
    p.feed(response)
  File "/tmp/Python-2.6.5/Lib/xmlrpclib.py", line 601, in feed
    self._parser.Parse(data, 0)
  File "/tmp/Python-2.6.5/Lib/xmlrpclib.py", line 868, in end
    return f(self, join(self._data, ""))
  File "/tmp/Python-2.6.5/Lib/xmlrpclib.py", 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: http://ws.apache.org/xmlrpc/types.html, 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.append(int(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).

----------
components: XML
messages: 106322
nosy: bra
priority: normal
severity: normal
status: open
title: xmlrpclib compatibility issues with Apache XML-RPC library
type: behavior
versions: Python 2.6

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue8792>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to