soup_message_io_stop() was unreffing unpause_source (if it was set),
but it didn't actually own a ref on it, so this would crash.
Fortunately this would only happen if you unpaused a message and then
immediately cancelled it, which isn't very common. Fixes a sporadic
chunk-test crash though.
if (io->unpause_source) {
g_source_destroy (io->unpause_source);
+ g_source_unref (io->unpause_source);
io->unpause_source = NULL;
}
SoupMessageIOData *io = priv->io_data;
g_return_val_if_fail (io != NULL, FALSE);
+
+ g_source_unref (io->unpause_source);
io->unpause_source = NULL;
io->paused = FALSE;
if (!io->blocking) {
if (!io->unpause_source) {
- io->unpause_source = soup_add_completion (
+ io->unpause_source = soup_add_completion_reffed (
io->async_context, io_unpause_internal, msg);
}
} else