[Zope] Help: XMLRPC question

Martijn Pieters mj@zope.com
Tue, 3 Sep 2002 10:16:01 -0400


On Tue, Sep 03, 2002 at 04:46:24PM +0300, Ruslan Spivak wrote:
[Snipped traceback]

> Fault: (see above)

The traceback isn't very useful, it only shows that an XML-RPC fault was
raised at the XML-RPC server. To diagnose the problem, you'd have to figure
out what the fault is.

> N.B. When I change ext. methods on comp A Zope so that they don't
> return anything it work's OK.
> example(on comp A) - old: Doesn't work
> 
> def vadduser(username, domain, password):
>     return vpopmail.vadduser(username, domain, password, "", 0)
> 
> new: Works
> 
> def vadduser(username, domain, password):
>     vpopmail.vadduser(username, domain, password, "", 0)
> 
> 
> But I need get the result codes.

This sound like there sometimes is not an integer return code, and whatever
*is* returned cannot be marshalled into an XML-RPC result.

You'll need to try and catch the XML-RPC Fault on the client side, and
examine its contents (see xmlrpclib.py for what attributes the object will
have); or you'll need to log whatever your wrapped extension library returns
when the fault occurs. Maybe a try - except on the server side with
exception logging would help, with an assert that the return code is indeed
either 0 or 1.

-- 
Martijn Pieters
| Software Engineer  mailto:mj@zope.com
| Zope Corporation   http://www.zope.com/
| Creators of Zope   http://www.zope.org/
---------------------------------------------