[Telepathy-commits] [telepathy-salut/master] Port to libsoup 2.4

Hubert Figuiere hub at figuiere.net
Thu Dec 4 13:13:33 PST 2008


---
 configure.ac                          |    2 +-
 lib/gibber/gibber-oob-file-transfer.c |   45 +++++++++++++++++---------------
 2 files changed, 25 insertions(+), 22 deletions(-)

diff --git a/configure.ac b/configure.ac
index b6ffb93..a81067d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -219,7 +219,7 @@ AC_SUBST(AVAHI_CFLAGS)
 AC_SUBST(AVAHI_LIBS)
 
 dnl Check for libsoup
-PKG_CHECK_MODULES(LIBSOUP, [libsoup-2.2])
+PKG_CHECK_MODULES(LIBSOUP, [libsoup-2.4])
 AC_SUBST(LIBSOUP_CFLAGS)
 AC_SUBST(LIBSOUP_LIBS)
 
diff --git a/lib/gibber/gibber-oob-file-transfer.c b/lib/gibber/gibber-oob-file-transfer.c
index e4a8180..8657201 100644
--- a/lib/gibber/gibber-oob-file-transfer.c
+++ b/lib/gibber/gibber-oob-file-transfer.c
@@ -25,7 +25,7 @@
 /* TODO: We should port code to use libsoup 2.4 */
 #include <libsoup/soup.h>
 #include <libsoup/soup-server.h>
-#include <libsoup/soup-server-message.h>
+#include <libsoup/soup-message.h>
 
 #include "gibber-xmpp-stanza.h"
 #include "gibber-oob-file-transfer.h"
@@ -293,25 +293,26 @@ http_client_chunk_cb (SoupMessage *msg,
     return;
 
   /* FIXME make async */
-  g_io_channel_write_chars (self->priv->channel, msg->response.body,
-      msg->response.length, NULL, NULL);
+  g_io_channel_write_chars (self->priv->channel, msg->response_body->data,
+      msg->response_body->length, NULL, NULL);
 
   if (msg->status_code != HTTP_STATUS_CODE_OK)
     {
       /* Something did wrong, so it's not file data. Don't fire the
        * transferred-chunk signal. */
-      self->priv->transferred_bytes += msg->response.length;
+      self->priv->transferred_bytes += msg->response_body->length;
       return;
     }
 
-  transferred_chunk (self, (guint64) msg->response.length);
+  transferred_chunk (self, (guint64) msg->response_body->length);
 }
 
 /*
  * Received all the file from the HTTP server.
  */
 static void
-http_client_finished_chunks_cb (SoupMessage *msg,
+http_client_finished_chunks_cb (SoupSession *session,
+                                SoupMessage *msg,
                                 gpointer user_data)
 {
   GibberOobFileTransfer *self = user_data;
@@ -521,9 +522,9 @@ input_channel_readable_cb (GIOChannel *source,
       switch (status)
         {
         case G_IO_STATUS_NORMAL:
-          soup_message_add_chunk (self->priv->msg, SOUP_BUFFER_SYSTEM_OWNED,
+          soup_message_body_append (self->priv->msg->request_body, SOUP_MEMORY_TAKE,
               buff, bytes_read);
-          soup_message_io_unpause (self->priv->msg);
+          soup_session_unpause_message (self->priv->session, self->priv->msg);
           DEBUG("Data available, writing a %"G_GSIZE_FORMAT" bytes chunk",
               bytes_read);
           transferred_chunk (self, (guint64) bytes_read);
@@ -544,8 +545,8 @@ input_channel_readable_cb (GIOChannel *source,
 #undef BUFF_SIZE
 
   DEBUG("Closing HTTP chunked transfer");
-  soup_message_add_final_chunk (self->priv->msg);
-  soup_message_io_unpause (self->priv->msg);
+  soup_message_body_complete (self->priv->msg->request_body);
+  soup_session_unpause_message (self->priv->session, self->priv->msg);
 
   g_io_channel_unref (self->priv->channel);
   self->priv->channel = NULL;
@@ -556,15 +557,18 @@ input_channel_readable_cb (GIOChannel *source,
 }
 
 static void
-http_server_cb (SoupServerContext *context,
+http_server_cb (SoupServer *server,
                 SoupMessage *msg,
+                const char *path,
+                GHashTable *query,
+                SoupClientContext *context,
                 gpointer user_data)
 {
-  const SoupUri *uri = soup_message_get_uri (msg);
+  const SoupURI *uri = soup_message_get_uri (msg);
   GibberOobFileTransfer *self = user_data;
   const gchar *accept_encoding;
 
-  if (context->method_id != SOUP_METHOD_ID_GET)
+  if (msg->method != SOUP_METHOD_GET)
     {
       DEBUG ("A HTTP client tried to use an unsupported method");
       soup_message_set_status (msg, SOUP_STATUS_NOT_IMPLEMENTED);
@@ -580,17 +584,16 @@ http_server_cb (SoupServerContext *context,
   DEBUG ("Serving '%s'", uri->path);
 
   soup_message_set_status (msg, SOUP_STATUS_OK);
-  soup_server_message_set_encoding (SOUP_SERVER_MESSAGE (msg),
-      SOUP_TRANSFER_CHUNKED);
+  soup_message_headers_set_encoding (msg->response_headers, SOUP_ENCODING_CHUNKED);
 
-  soup_message_add_header (msg->response_headers, "Content-Type",
+  soup_message_headers_append (msg->response_headers, "Content-Type",
       GIBBER_FILE_TRANSFER (self)->content_type);
 
   self->priv->msg = g_object_ref (msg);
 
   /* iChat accepts only AppleSingle encoding, i.e. file's contents and
    * attributes are stored in the same stream */
-  accept_encoding = soup_message_get_header (msg->request_headers,
+  accept_encoding = soup_message_headers_get (msg->request_headers,
       "Accept-Encoding");
   if (accept_encoding != NULL && strcmp (accept_encoding, "AppleSingle") == 0)
     {
@@ -630,13 +633,13 @@ http_server_cb (SoupServerContext *context,
       uint32 = htonl (size);
       g_byte_array_append (array, (guint8*) &uint32, 4);
 
-      soup_message_add_header (msg->response_headers, "Content-encoding",
+      soup_message_headers_append (msg->response_headers, "Content-encoding",
           "AppleSingle");
 
       /* libsoup will free the date once they are written */
       len = array->len;
       buff = (gchar *) g_byte_array_free (array, FALSE);
-      soup_message_add_chunk (self->priv->msg, SOUP_BUFFER_SYSTEM_OWNED,
+      soup_message_body_append (self->priv->msg->response_body, SOUP_MEMORY_TAKE,
           buff, len);
 
       soup_message_io_unpause (self->priv->msg);
@@ -667,8 +670,8 @@ gibber_oob_file_transfer_offer (GibberFileTransfer *ft)
       return;
     }
 
-  soup_server_add_handler (self->priv->server, self->priv->served_name, NULL,
-      http_server_cb, NULL, self);
+  soup_server_add_handler (self->priv->server, self->priv->served_name,
+      http_server_cb, self, NULL);
 
   if (!gibber_file_transfer_send_stanza (GIBBER_FILE_TRANSFER (self),
         stanza, &error))
-- 
1.5.6.5




More information about the Telepathy-commits mailing list