[Telepathy-commits] [telepathy-salut/master] gibber-oob-file-transfer: unref the msg when disposing in the receiver case too if needed so we are sure to free all the soup objects

Guillaume Desmottes guillaume.desmottes at collabora.co.uk
Wed Dec 3 07:05:31 PST 2008


---
 lib/gibber/gibber-oob-file-transfer.c |   17 ++++++++++-------
 1 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/lib/gibber/gibber-oob-file-transfer.c b/lib/gibber/gibber-oob-file-transfer.c
index dcb35b4..e4a8180 100644
--- a/lib/gibber/gibber-oob-file-transfer.c
+++ b/lib/gibber/gibber-oob-file-transfer.c
@@ -50,7 +50,8 @@ struct _GibberOobFileTransferPrivate
 {
   /* HTTP server used to send files (only when sending files) */
   SoupServer *server;
-  /* object used to send file chunks (only when sending files) */
+  /* object used to send file chunks (when sending files) or to
+   * get the file (when receiving file) */
   SoupMessage *msg;
   /* The unescaped served path passed to libsoup, i.e.
    * "/salut-ft-12/hello world" (only when sending files) */
@@ -321,6 +322,9 @@ http_client_finished_chunks_cb (SoupMessage *msg,
   /* disconnect from the "got_chunk" signal */
   g_signal_handlers_disconnect_by_func (msg, http_client_chunk_cb, user_data);
 
+  /* message has been unreffed by libsoup */
+  self->priv->msg = NULL;
+
   g_io_channel_unref (self->priv->channel);
   self->priv->channel = NULL;
 
@@ -387,11 +391,10 @@ gibber_oob_file_transfer_receive (GibberFileTransfer *ft,
                                   GIOChannel *dest)
 {
   GibberOobFileTransfer *self = GIBBER_OOB_FILE_TRANSFER (ft);
-  SoupMessage *msg;
 
   self->priv->session = soup_session_async_new ();
-  msg = soup_message_new (SOUP_METHOD_GET, self->priv->url);
-  if (msg == NULL)
+  self->priv->msg = soup_message_new (SOUP_METHOD_GET, self->priv->url);
+  if (self->priv->msg == NULL)
     {
       GError *error = NULL;
 
@@ -405,9 +408,9 @@ gibber_oob_file_transfer_receive (GibberFileTransfer *ft,
 
   self->priv->channel = g_io_channel_ref (dest);
 
-  soup_message_set_flags (msg, SOUP_MESSAGE_OVERWRITE_CHUNKS);
-  g_signal_connect (msg, "got_chunk", G_CALLBACK (http_client_chunk_cb), self);
-  soup_session_queue_message (self->priv->session, msg,
+  soup_message_set_flags (self->priv->msg, SOUP_MESSAGE_OVERWRITE_CHUNKS);
+  g_signal_connect (self->priv->msg, "got_chunk", G_CALLBACK (http_client_chunk_cb), self);
+  soup_session_queue_message (self->priv->session, self->priv->msg,
       http_client_finished_chunks_cb, self);
 }
 
-- 
1.5.6.5




More information about the Telepathy-commits mailing list