Re: libsoup-CRITICAL **: soup_session_real_requeue_message: assertion 'item != NULL' failed



On 09 Oct 2015, at 1:11 AM, Graham Leggett <minfrin sharp fm> wrote:

Some more details of the problem.

When the HTTP server is up and running and responding to libsoup correctly, the souphttpclientsink works 
fine. When I try and artificially induce a failure by stopping the HTTP server, I expect libsoup to return 
some kind of failure indicating “connection refused”.

Instead I get the following response code and reason string:

WARNING: from element /GstPipeline:pipeline0/GstSoupHttpClientSink:souphttpclientsink0: Could not write to 
HTTP URI
Additional debug info:
gstsouphttpclientsink.c(754): callback (): /GstPipeline:pipeline0/GstSoupHttpClientSink:souphttpclientsink0:
status: 8 Message Corrupt (retrying PUT after 5 seconds)

Can anyone explain under what circumstances you’ll get “Message Corrupt”?

Picking this apart some more, and stepping through the code, I see that during soup_session_requeue_message() 
there is an attempt to find the message in the queue using soup_message_queue_lookup(), and 
soup_message_queue_lookup() returns NULL, causing the assertion failure.

Picking apart soup_message_queue_lookup(), the message is in fact there in the queue, but marked as 
“removed”, and so the message is ignored, thus returning NULL.

According to the docs at 
https://developer.gnome.org/libsoup/stable/SoupSession.html#soup-session-requeue-message we’re told "This 
causes msg to be placed back on the queue to be attempted again.”, however this doesn’t seem to happen in 
this case, and the docs are silent on the circumstances where this call won’t work, or what the prerequisites 
are for using the call.

Can anyone shed any light on the soup_session_requeue_message() and how it is supposed to work?

Regards,
Graham
—



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]