Closed Bug 37913 Opened 24 years ago Closed 23 years ago

XmlRpcClient::call blocks forever

Categories

(Core :: XML, defect, P3)

defect

Tracking

()

RESOLVED WONTFIX
Future

People

(Reporter: mj, Assigned: mj)

Details

Calling XmlRpcClient::call blocks forever. 

This is because reading from a HTTPChannel::openInputStream() returned stream
cannot take place on the same thread. See bug #22103.

A fix for the latter bug will most likely also fix this one in one fell swoop.
Workaround: Use XmlRpcClient::asyncCall instead.
Status: NEW → ASSIGNED
Depends on: 22103
Target Milestone: --- → M18
No longer depends on: 22103
QA Contact: chrisd → petersen
Bug 22103 is verified fixed now.
Even though bug #22103 is now fixed, I can't get openInputStream to work. ::call
now times out, because the inputStream.available() never goes beyond 0.

Ruslan, I added you to the CC list because I am stumped on this one. Could you
spare a minute and have a look?

I duplicated the code into xpc-shell, and if I set
nsIHttpChannel.openInputStreamHasEventQueue to false before calling
openInputStream, it all works, but this doesn't hold up in my component.

To reproduce:
0. Make sure that either bug #48564 is marked 'fixed' or use the attached patch.
1. Copy extensions/xml-rpc/test/xml-rpc.xul to
dist/bin/chrome/packages/core/test/content/xml-rpc.xul (create path as
necessary).
2/ Fire up Mozilla as 'mozilla -chrome chrome://test/content/xml-rpc.xul'
3. Fill in a number in the text field (between 1 and 50, IIRC. 12 is a safe
bet).
3. Click 'Call Sync.'

After a while you get a timeout exception.

If you insert 'channel.openInputStreamHasEventQueue = false;' after line 124
things still don't work, even though they do in the xpc-shell. A tcp trace shows
that the request headers get sent, but the POST body isn't, again, in xpc-shell
this _does_ happen.

To aid debugging, set DEBUG = true; in nsXmlRpcClient.js, line 39. If you are
hungry for XML parsing events, set DEBUGPARSE to true as well. No preprocessor
for JS.. ;)
Target Milestone: M18 → Future
Does the test still work? Or has the path/directory-structure to be changed to
comply with new packaging rules? Is the README in xml-rpc/test still valid?
from darin: "it's WONTFIX due to the fact that providing it would make mozilla
ui responsiveness suck"

So I will remove the sync option from xml-rpc.
I have the async part working again though.
Status: ASSIGNED → RESOLVED
Closed: 23 years ago
Resolution: --- → WONTFIX
Thanks Samuel, for fixing the async XML-RPC code. Much appreciated!
see bug 109960
QA Contact: petersen → rakeshmishra
You need to log in before you can comment on or make changes to this bug.