GNOME Bugzilla – Bug 606645
criticals on rygel console when streaming
Last modified: 2010-01-25 14:58:29 UTC
I keep seeing these criticals on server-side when HTTP client stream data from rygel: (rygel:3864): libsoup-CRITICAL **: soup_message_body_flatten: assertion `priv->accumulate == TRUE' failed
Fixed in git. Thanks. FYI, the warning would only be triggered if the client included a Range header, to request only part of the resource. soup-message-server-io has code to automatically fix up SoupServer responses so that if the client requested a subrange, we only return that range. But it only works for non-streamed responses. This is still OK, protocolwise, because you're allowed to ignore the Range header and just return the full response anyway, but this would be really inefficient if the client only wanted a small piece of it. So you might want to look at the Range header yourself (soup_message_headers_get_ranges()) and return the proper subrange if appropriate (and if it's not too hard for you to compute because of transcoding, etc).
(see soup-message-server-io.c:handle_partial_get() for details)
(In reply to comment #1) > Fixed in git. Thanks. Cool! > FYI, the warning would only be triggered if the client included a Range > header, to request only part of the resource. You mean I get it because I am not properly handling the 'Range' request and push more bytes then requested? I get it this warning soon after the client closes the connection (SoupServer::request-aborted is emitted). > soup-message-server-io has > code to automatically fix up SoupServer responses so that if the client > requested a subrange, we only return that range. But it only works for > non-streamed responses. This is still OK, protocolwise, because you're > allowed to ignore the Range header and just return the full response > anyway, but this would be really inefficient if the client only wanted > a small piece of it. So you might want to look at the Range header > yourself (soup_message_headers_get_ranges()) and return the proper > subrange if appropriate (and if it's not too hard for you to compute > because of transcoding, etc). I do handle the range header for non-transcoded streams.
(In reply to comment #3) > I get it this warning soon after the client > closes the connection (SoupServer::request-aborted is emitted). hm... that might be something other than what I fixed then... if you get it with git libsoup (or with 2.29.6, coming out this week), set a breakpoint on g_log and get a backtrace of where the error is coming from