[sr-dev] xmlrcp request takes very long time

Andrei Pelinescu-Onciul andrei at iptel.org
Tue Jul 7 00:50:29 CEST 2009


On Jul 06, 2009 at 23:16, Ra?l Alexis Betancor Santana <rabs at dimension-virtual.com> wrote:
> On Monday 06 July 2009 22:50:38 Andrei Pelinescu-Onciul wrote:
> > On Jul 06, 2009 at 22:37, Ra?l Alexis Betancor Santana 
> <rabs at dimension-virtual.com> wrote:
> > > On Monday 06 July 2009 21:41:40 Juha Heinanen wrote:
> > > > i may be wrong, but it is hard for me to believe that python xmlrpclib
> > > > would be badly broken, because it is very widely used.
> > >
> > > I also doub that xmlrpclib it's the problem
> >
> > Being standard HTTP, the xmlrpc client should close the connection after
> > receiving the answer (if it doesn't want a connection persistent mode)
> > and not the reverse.
> 
> But server is sending a response not ended by CR+LF, so client doesn't know 
> that it must close the connection and also as serving HTTP/1.0 resquest 
> server MUST close the connection when it send its response.

AFAIK the request does not have to end in anything specific. The
headers end with a double CRLF and then there are Content-Lenght bytes
of the body.

> 
> What I see is that server is sending out HTTP/1.0 responses so you could NEVER 
> have a client that could wait for persistent connections because if it does, 
> it will be breaking HTTP/1.0 RFC

The server server sends exactly the same HTTP version in the reponse
that it has received in the request (if the request  is HTTP/1.1 the
reply is HTTP/1.1).
> 
> > Juha meant only the xml body. All the HTTP header lines are CRLF
> > terminated.
> 
> And boundary between headers and body ?

It's ok (or else the body would not be at all parse-able and no xmlrpc
client would work).

> 
> > It's true only for the headers. How the body looks depends on what does
> > it carry. For the case of xmlrpc it's xml which is quite free-form (you
> >  can have the whole xml part on one line if you want to).
> 
> Yes, but I was not telling that body must follow cr+lf spec .. I told that 
> response should be:
> 
> HTTP/1.0
> header: value<cr><lf>
> <cr><lf>
> {xml response(no matter if one line or more)}<cr><lf>
> <cr><lf>
> 
> It should be easy to check, I don't use xmlrpc on s-r so I could not check it 
It is. The problem is the python xmlrpc client waits for the server to
close the connection. It might be related to the fact that it uses
http/1.0 by default (but I don't know how can that be easily changed).
However the perl client works, the python client works with a transport
class and the latest sr version has support for closing the connection
 after sending a reply if one really wants to and prefer this rather
 then updating his python/php program.

Andrei



More information about the sr-dev mailing list