]> git.pld-linux.org Git - packages/rhythmbox.git/commitdiff
- no longer needed
authorPatryk Zawadzki <patrys@room-303.com>
Sun, 16 Mar 2008 23:52:32 +0000 (23:52 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    rhythmbox-as-needed.patch -> 1.2
    rhythmbox-bug510406.patch -> 1.2
    rhythmbox-configure.patch -> 1.2
    rhythmbox-soup24.patch -> 1.2

rhythmbox-as-needed.patch [deleted file]
rhythmbox-bug510406.patch [deleted file]
rhythmbox-configure.patch [deleted file]
rhythmbox-soup24.patch [deleted file]

diff --git a/rhythmbox-as-needed.patch b/rhythmbox-as-needed.patch
deleted file mode 100644 (file)
index 79ddf45..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/lib/Makefile.am b/lib/Makefile.am
-index 21fc6d8..6cd69c2 100644
---- a/lib/Makefile.am
-+++ b/lib/Makefile.am
-@@ -51,6 +51,8 @@ INCLUDES =                                           \
-       $(SOUP_CFLAGS)                                  \
-       $(RHYTHMBOX_CFLAGS)
-+librb_la_LIBADD = $(SOUP_LIBS)
-+
- BUILT_SOURCES=
- CLEAN_FILES = $(BUILT_SOURCES)
diff --git a/rhythmbox-bug510406.patch b/rhythmbox-bug510406.patch
deleted file mode 100644 (file)
index 8939467..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-Index: plugins/mmkeys/rb-mmkeys-plugin.c
-===================================================================
---- plugins/mmkeys/rb-mmkeys-plugin.c  (wersja 5571)
-+++ plugins/mmkeys/rb-mmkeys-plugin.c  (wersja 5572)
-@@ -294,21 +294,49 @@
-       if (plugin->grab_type == NONE && bus != NULL) {
-               GError *error = NULL;
--              plugin->proxy = dbus_g_proxy_new_for_name (bus,
--                              "org.gnome.SettingsDaemon",
--                              "/org/gnome/SettingsDaemon",
--                              "org.gnome.SettingsDaemon");
--              if (plugin->proxy != NULL) {
-+              plugin->proxy = dbus_g_proxy_new_for_name_owner (bus,
-+                                                               "org.gnome.SettingsDaemon",
-+                                                               "/org/gnome/SettingsDaemon/MediaKeys",
-+                                                               "org.gnome.SettingsDaemon.MediaKeys",
-+                                                               &error);
-+              if (plugin->proxy == NULL) {
-+                      g_warning ("Unable to grab media player keys: %s", error->message);
-+                      g_error_free (error);
-+              } else {
-                       dbus_g_proxy_call (plugin->proxy,
-                                          "GrabMediaPlayerKeys", &error,
-                                          G_TYPE_STRING, "Rhythmbox",
-                                          G_TYPE_UINT, 0,
-                                          G_TYPE_INVALID,
-                                          G_TYPE_INVALID);
-+
-+                      /* if the method doesn't exist, try the old interface/path */
-+                      if (error != NULL &&
-+                          error->domain == DBUS_GERROR &&
-+                          error->code == DBUS_GERROR_UNKNOWN_METHOD) {
-+                              g_clear_error (&error);
-+                              g_object_unref (plugin->proxy);
-+
-+                              rb_debug ("trying old dbus interface/path");
-+                              plugin->proxy = dbus_g_proxy_new_for_name_owner (bus,
-+                                                                               "org.gnome.SettingsDaemon",
-+                                                                               "/org/gnome/SettingsDaemon",
-+                                                                               "org.gnome.SettingsDaemon",
-+                                                                               &error);
-+                              if (plugin->proxy != NULL) {
-+                                      dbus_g_proxy_call (plugin->proxy,
-+                                                         "GrabMediaPlayerKeys", &error,
-+                                                         G_TYPE_STRING, "Rhythmbox",
-+                                                         G_TYPE_UINT, 0,
-+                                                         G_TYPE_INVALID,
-+                                                         G_TYPE_INVALID);
-+                              }
-+                      }
-+
-                       if (error == NULL) {
-                               GtkWindow *window;
--                              rb_debug ("created dbus proxy for org.gnome.SettingsDaemon; grabbing keys");
-+                              rb_debug ("created dbus proxy for org.gnome.SettingsDaemon.MediaKeys; grabbing keys");
-                               dbus_g_object_register_marshaller (rb_marshal_VOID__STRING_STRING,
-                                               G_TYPE_NONE, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INVALID);
-@@ -329,15 +357,6 @@
-                               g_object_unref (window);
-                               plugin->grab_type = SETTINGS_DAEMON;
--
--                      } else if (error->domain == DBUS_GERROR &&
--                                 (error->code != DBUS_GERROR_NAME_HAS_NO_OWNER ||
--                                 error->code != DBUS_GERROR_SERVICE_UNKNOWN)) {
--                              /* settings daemon dbus service doesn't exist.
--                               * just silently fail.
--                               */
--                              rb_debug ("org.gnome.SettingsDaemon dbus service not found");
--                              g_error_free (error);
-                       } else {
-                               g_warning ("Unable to grab media player keys: %s", error->message);
-                               g_error_free (error);
diff --git a/rhythmbox-configure.patch b/rhythmbox-configure.patch
deleted file mode 100644 (file)
index f48871d..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -urN rhythmbox-0.9.8/configure.ac rhythmbox-0.9.8.new/configure.ac
---- rhythmbox-0.9.8/configure.ac       2007-02-24 12:16:55.000000000 +0100
-+++ rhythmbox-0.9.8.new/configure.ac   2007-02-24 12:59:25.000000000 +0100
-@@ -910,7 +910,7 @@
- dnl check, for unit tests
--AM_PATH_CHECK([], have_check=yes, have_check=no)
-+PKG_CHECK_MODULES(CHECK, check >= 0.9.4, have_check=yes, have_check=no)
- AM_CONDITIONAL([HAVE_CHECK],[test "x$have_check" = "xyes"])
diff --git a/rhythmbox-soup24.patch b/rhythmbox-soup24.patch
deleted file mode 100644 (file)
index d257f63..0000000
+++ /dev/null
@@ -1,1743 +0,0 @@
-diff -urN rhythmbox-0.11.4/configure.ac rhythmbox-0.11.4.new/configure.ac
---- rhythmbox-0.11.4/configure.ac      2007-12-20 11:56:44.000000000 +0000
-+++ rhythmbox-0.11.4.new/configure.ac  2008-02-06 00:57:27.000000000 +0000
-@@ -441,18 +441,25 @@
- dnl Check for libsoup, needed for DAAP and audioscrobbler
- if test "x$enable_daap" = "xyes" || test "x$enable_audioscrobbler" != "xno"; then
-       PKG_CHECK_MODULES(SOUP,                            \
--              libsoup-2.2,
--              have_libsoup=yes,
--              have_libsoup=no)
--      if test x"$have_libsoup" = "xno"; then
-+              libsoup-2.4,
-+              have_libsoup24=yes,
-+              have_libsoup24=no)
-+      if test x"$have_libsoup24" = "xno"; then
-               PKG_CHECK_MODULES(SOUP,
--                      libsoup-2.4,
--                      have_libsoup=yes,
--                      have_libsoup=no)
-+                      libsoup-2.2,
-+                      have_libsoup22=yes,
-+                      have_libsoup22=no)
-       fi
--      if test x"$have_libsoup" = "xyes"; then
-+      if test x"$have_libsoup24" = "xyes" || test x"$have_libsoup22" = "xyes"; then
-+              have_libsoup=yes
-               AC_DEFINE(HAVE_LIBSOUP, 1, [Define if libsoup support is enabled])
-       fi
-+      if test x"$have_libsoup24" = "xyes"; then
-+              AC_DEFINE(HAVE_LIBSOUP_2_4, 1, [Define if libsoup 2.4 support is enabled])
-+      fi
-+      if test x"$have_libsoup22" = "xyes"; then
-+              AC_DEFINE(HAVE_LIBSOUP_2_2, 1, [Define if libsoup 2.2 support is enabled])
-+      fi
- fi
- AM_CONDITIONAL(USE_LIBSOUP, test x"$have_libsoup" = "xyes")
-@@ -513,27 +520,9 @@
--AC_PATH_X
--
--if test x"$x_includes" != x"NONE" && test -n "$x_includes" ; then
--      CFLAGS=$CFLAGS -I`echo $x_includes | sed -e "s/:/ -I/g"`
--fi
--if test x"$x_libraries" != x"NONE" && test -n "$x_libraries" ; then
--      LIBS=-L`echo $x_libraries | sed -e "s/:/ -L/g"`
--fi
--
--have_xidle=no
--AC_COMPILE_IFELSE([
--      #include <X11/extensions/xidle.h>
--int main(int argc,char **argv) {
--  return 0;
--}
--], have_xidle=yes)
--AC_MSG_CHECKING(for XIDLE extension)
--AC_MSG_RESULT($have_xidle)
--if test x"$have_xidle" = "xyes" ; then
--      AC_DEFINE(HAVE_XIDLE_EXTENSION, 1, [defined if you have X11/extensions/xidle.h])
--fi
-+AC_PATH_XTRA
-+CFLAGS="$CFLAGS $X_CFLAGS"
-+#LIBS=$X_LIBS
- dnl Multimedia keys
- have_xfree=no
-@@ -1167,7 +1156,11 @@
-       AC_MSG_NOTICE([   CD burning support disabled])
- fi
- if test x"$enable_daap" = xyes; then
--      AC_MSG_NOTICE([** DAAP (music sharing) support is enabled])
-+      if test x"$have_libsoup24" = "xyes"; then
-+              AC_MSG_NOTICE([** DAAP (music sharing) support is enabled (using libsoup 2.4)])
-+      elif test x"$have_libsoup22" = "xyes"; then
-+              AC_MSG_NOTICE([** DAAP (music sharing) support is enabled (using libsoup 2.2)])
-+      fi
- else
-       AC_MSG_NOTICE([   DAAP (music sharing) support is disabled])
- fi
-@@ -1197,7 +1190,11 @@
-       AC_MSG_NOTICE([   gnome-keyring support disabled])
- fi
- if test x"$enable_audioscrobbler" != xno; then
--      AC_MSG_NOTICE([** Audioscrobbler support enabled])
-+      if test x"$have_libsoup24" = "xyes"; then
-+              AC_MSG_NOTICE([** Audioscrobbler support enabled (using libsoup 2.4)])
-+      elif test x"$have_libsoup22" = "xyes"; then
-+              AC_MSG_NOTICE([** Audioscrobbler support enabled (using libsoup 2.2)])
-+      fi
- else
-       AC_MSG_NOTICE([   Audioscrobbler support disabled])
- fi
-diff -urN rhythmbox-0.11.4/lib/Makefile.am rhythmbox-0.11.4.new/lib/Makefile.am
---- rhythmbox-0.11.4/lib/Makefile.am   2007-08-01 09:04:11.000000000 +0100
-+++ rhythmbox-0.11.4.new/lib/Makefile.am       2008-02-06 00:57:27.000000000 +0000
-@@ -34,7 +34,8 @@
-       rb-string-value-map.c                           \
-       rb-string-value-map.h                           \
-       rb-async-queue-watch.c                          \
--      rb-async-queue-watch.h
-+      rb-async-queue-watch.h                          \
-+      rb-soup-compat.h
- if WITH_INTERNAL_GSEQUENCE
- librb_la_SOURCES += gsequence.c gsequence.h
-diff -urN rhythmbox-0.11.4/lib/rb-proxy-config.c rhythmbox-0.11.4.new/lib/rb-proxy-config.c
---- rhythmbox-0.11.4/lib/rb-proxy-config.c     2007-06-03 02:55:02.000000000 +0100
-+++ rhythmbox-0.11.4.new/lib/rb-proxy-config.c 2008-02-06 00:57:27.000000000 +0000
-@@ -231,7 +231,28 @@
-       }
- }
--#if defined(HAVE_LIBSOUP)
-+#if defined(HAVE_LIBSOUP_2_4)
-+SoupURI *
-+rb_proxy_config_get_libsoup_uri (RBProxyConfig *config)
-+{
-+      SoupURI *uri = NULL;
-+
-+      if (!config->enabled)
-+              return NULL;
-+
-+      uri = soup_uri_new (NULL);
-+      soup_uri_set_scheme (uri, SOUP_URI_SCHEME_HTTP);
-+      soup_uri_set_host (uri, config->host);
-+      soup_uri_set_port (uri, config->port);
-+
-+      if (config->auth_enabled) {
-+              soup_uri_set_user (uri, config->username);
-+              soup_uri_set_password (uri, config->password);
-+      }
-+
-+      return uri;
-+}
-+#elif defined(HAVE_LIBSOUP_2_2)
- SoupUri *
- rb_proxy_config_get_libsoup_uri (RBProxyConfig *config)
- {
-diff -urN rhythmbox-0.11.4/lib/rb-proxy-config.h rhythmbox-0.11.4.new/lib/rb-proxy-config.h
---- rhythmbox-0.11.4/lib/rb-proxy-config.h     2007-06-03 02:55:02.000000000 +0100
-+++ rhythmbox-0.11.4.new/lib/rb-proxy-config.h 2008-02-06 00:57:27.000000000 +0000
-@@ -24,8 +24,8 @@
- #include <glib-object.h>
- #if defined(HAVE_LIBSOUP)
-+#include "rb-soup-compat.h"
- #include <libsoup/soup.h>
--#include <libsoup/soup-uri.h>
- #endif
- G_BEGIN_DECLS
-@@ -65,9 +65,7 @@
- RBProxyConfig *       rb_proxy_config_new (void);
--#if defined(HAVE_LIBSOUP)
--SoupUri *     rb_proxy_config_get_libsoup_uri (RBProxyConfig *config);
--#endif
-+SoupURI *     rb_proxy_config_get_libsoup_uri (RBProxyConfig *config);
- #endif        /* RB_PROXY_CONFIG_H */
-diff -urN rhythmbox-0.11.4/lib/rb-soup-compat.h rhythmbox-0.11.4.new/lib/rb-soup-compat.h
---- rhythmbox-0.11.4/lib/rb-soup-compat.h      1970-01-01 01:00:00.000000000 +0100
-+++ rhythmbox-0.11.4.new/lib/rb-soup-compat.h  2008-02-06 00:57:27.000000000 +0000
-@@ -0,0 +1,59 @@
-+/*
-+ *  Copyright (C) 2008  Jonathan Matthew <jonathan@d14n.org>
-+ *
-+ *  This program is free software; you can redistribute it and/or modify
-+ *  it under the terms of the GNU General Public License as published by
-+ *  the Free Software Foundation; either version 2 of the License, or
-+ *  (at your option) any later version.
-+ *
-+ *  This program is distributed in the hope that it will be useful,
-+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ *  GNU General Public License for more details.
-+ *
-+ *  You should have received a copy of the GNU General Public License
-+ *  along with this program; if not, write to the Free Software
-+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  
-+ *  02110-1301  USA
-+ */
-+
-+#ifndef RB_SOUP_COMPAT_H
-+#define RB_SOUP_COMPAT_H
-+
-+#include <libsoup/soup.h>
-+
-+/* compatibility junk for libsoup 2.2.
-+ * not intended to obviate the need for #ifdefs in code, but
-+ * should remove a lot of the trivial ones and make it easier
-+ * to drop libsoup 2.2
-+ */
-+#if defined(HAVE_LIBSOUP_2_2)
-+
-+#include <libsoup/soup-uri.h>
-+#include <libsoup/soup-address.h>
-+#include <libsoup/soup-connection.h>
-+#include <libsoup/soup-headers.h>
-+#include <libsoup/soup-message.h>
-+#include <libsoup/soup-misc.h>
-+#include <libsoup/soup-session-sync.h>
-+#include <libsoup/soup-server.h>
-+#include <libsoup/soup-server-auth.h>
-+#include <libsoup/soup-server-message.h>
-+
-+
-+typedef SoupUri                               SoupURI;
-+typedef SoupMessageCallbackFn         SoupSessionCallback;
-+typedef SoupServerContext             SoupClientContext;
-+
-+#define SOUP_MEMORY_TAKE              SOUP_BUFFER_SYSTEM_OWNED
-+#define SOUP_MEMORY_TEMPORARY         SOUP_BUFFER_USER_OWNED
-+
-+#define soup_message_headers_append   soup_message_add_header
-+#define soup_message_headers_get      soup_message_get_header
-+
-+#define soup_client_context_get_host  soup_server_context_get_client_host
-+
-+#endif        /* HAVE_LIBSOUP_2_2 */
-+
-+#endif        /* RB_SOUP_COMPAT_H */
-+
-diff -urN rhythmbox-0.11.4/plugins/audioscrobbler/rb-audioscrobbler.c rhythmbox-0.11.4.new/plugins/audioscrobbler/rb-audioscrobbler.c
---- rhythmbox-0.11.4/plugins/audioscrobbler/rb-audioscrobbler.c        2007-12-17 09:26:53.000000000 +0000
-+++ rhythmbox-0.11.4.new/plugins/audioscrobbler/rb-audioscrobbler.c    2008-02-06 00:59:48.000000000 +0000
-@@ -24,6 +24,8 @@
- #define __EXTENSIONS__
-+#include "config.h"
-+
- #include <errno.h>
- #include <string.h>
-@@ -35,10 +37,9 @@
- #include <gtk/gtk.h>
- #include <gconf/gconf-value.h>
-+#include "rb-soup-compat.h"
- #include <libsoup/soup.h>
--#include <libsoup/soup-uri.h>
--#include "config.h"
- #include "eel-gconf-extensions.h"
- #include "rb-audioscrobbler.h"
- #include "rb-debug.h"
-@@ -193,14 +194,20 @@
- static gchar *             mkmd5 (char *string);
- static void        rb_audioscrobbler_parse_response (RBAudioscrobbler *audioscrobbler, SoupMessage *msg);
--static void        rb_audioscrobbler_perform (RBAudioscrobbler *audioscrobbler,
--                                             char *url,
--                                             char *post_data,
--                                                 SoupMessageCallbackFn response_handler);
-+
- static void        rb_audioscrobbler_do_handshake (RBAudioscrobbler *audioscrobbler);
--static void        rb_audioscrobbler_do_handshake_cb (SoupMessage *msg, gpointer user_data);
- static void        rb_audioscrobbler_submit_queue (RBAudioscrobbler *audioscrobbler);
-+static void        rb_audioscrobbler_perform (RBAudioscrobbler *audioscrobbler,
-+                                              char *url,
-+                                              char *post_data,
-+                                              SoupSessionCallback response_handler);
-+#if defined(HAVE_LIBSOUP_2_4)
-+static void        rb_audioscrobbler_do_handshake_cb (SoupSession *session, SoupMessage *msg, gpointer user_data);
-+static void        rb_audioscrobbler_submit_queue_cb (SoupSession *session, SoupMessage *msg, gpointer user_data);
-+#else
-+static void        rb_audioscrobbler_do_handshake_cb (SoupMessage *msg, gpointer user_data);
- static void        rb_audioscrobbler_submit_queue_cb (SoupMessage *msg, gpointer user_data);
-+#endif
- static void        rb_audioscrobbler_import_settings (RBAudioscrobbler *audioscrobbler);
- static void        rb_audioscrobbler_preferences_sync (RBAudioscrobbler *audioscrobbler);
-@@ -688,18 +695,31 @@
- static void
- rb_audioscrobbler_parse_response (RBAudioscrobbler *audioscrobbler, SoupMessage *msg)
- {
-+      gboolean successful;
-       rb_debug ("Parsing response, status=%d", msg->status_code);
--
--      if (SOUP_STATUS_IS_SUCCESSFUL (msg->status_code) && (msg->response).body != NULL) {
--              gchar *body;
-+      
-+      successful = FALSE;
-+#if defined(HAVE_LIBSOUP_2_4)
-+      if (SOUP_STATUS_IS_SUCCESSFUL (msg->status_code) && msg->response_body->length != 0)
-+              successful = TRUE;
-+#else
-+      if (SOUP_STATUS_IS_SUCCESSFUL (msg->status_code) && (msg->response).body != NULL)
-+              successful = TRUE;
-+#endif
-+      if (successful) {
-               gchar **breaks;
-+              int i;
-+#if defined(HAVE_LIBSOUP_2_2)
-+              gchar *body;
-               body = g_malloc0 ((msg->response).length + 1);
-               memcpy (body, (msg->response).body, (msg->response).length);
-               g_strstrip (body);
-               breaks = g_strsplit (body, "\n", 4);
--              int i;
-+#else
-+              breaks = g_strsplit (msg->response_body->data, "\n", 4);
-+#endif
-               g_free (audioscrobbler->priv->status_msg);
-               audioscrobbler->priv->status = STATUS_OK;
-@@ -771,10 +791,12 @@
-                       audioscrobbler->priv->submit_next = time(NULL) + audioscrobbler->priv->submit_interval;
-               g_strfreev (breaks);
-+#if defined(HAVE_LIBSOUP_2_2)
-               g_free (body);
-+#endif
-       } else {
-               audioscrobbler->priv->status = REQUEST_FAILED;
--              audioscrobbler->priv->status_msg = g_strdup (soup_status_get_phrase (msg->status_code));
-+              audioscrobbler->priv->status_msg = g_strdup (msg->reason_phrase);
-       }
- }
-@@ -793,24 +815,25 @@
- rb_audioscrobbler_perform (RBAudioscrobbler *audioscrobbler,
-                          char *url,
-                          char *post_data,
--                         SoupMessageCallbackFn response_handler)
-+                         SoupSessionCallback response_handler)
- {
-       SoupMessage *msg;
-       msg = soup_message_new (post_data == NULL ? "GET" : "POST", url);
-+      soup_message_headers_append (msg->request_headers, "User-Agent", "Rhythmbox/" VERSION);
-       if (post_data != NULL) {
-               rb_debug ("Submitting to Audioscrobbler: %s", post_data);
-               soup_message_set_request (msg,
-                                         "application/x-www-form-urlencoded",
--                                        SOUP_BUFFER_SYSTEM_OWNED,
-+                                        SOUP_MEMORY_TAKE,
-                                         post_data,
-                                         strlen (post_data));
-       }
-       /* create soup session, if we haven't got one yet */
-       if (!audioscrobbler->priv->soup_session) {
--              SoupUri *uri;
-+              SoupURI *uri;
-               uri = rb_proxy_config_get_libsoup_uri (audioscrobbler->priv->proxy_config);
-               audioscrobbler->priv->soup_session = soup_session_async_new_with_options (
-@@ -891,8 +914,13 @@
- }
-+#if defined(HAVE_LIBSOUP_2_4)
-+static void
-+rb_audioscrobbler_do_handshake_cb (SoupSession *session, SoupMessage *msg, gpointer user_data)
-+#else
- static void
- rb_audioscrobbler_do_handshake_cb (SoupMessage *msg, gpointer user_data)
-+#endif
- {
-       RBAudioscrobbler *audioscrobbler = RB_AUDIOSCROBBLER(user_data);
-@@ -1049,8 +1077,13 @@
-       }
- }
-+#if defined(HAVE_LIBSOUP_2_4)
-+static void
-+rb_audioscrobbler_submit_queue_cb (SoupSession *session, SoupMessage *msg, gpointer user_data)
-+#else
- static void
- rb_audioscrobbler_submit_queue_cb (SoupMessage *msg, gpointer user_data)
-+#endif
- {
-       RBAudioscrobbler *audioscrobbler = RB_AUDIOSCROBBLER (user_data);
-@@ -1232,7 +1265,7 @@
- rb_audioscrobbler_proxy_config_changed_cb (RBProxyConfig *config,
-                                          RBAudioscrobbler *audioscrobbler)
- {
--      SoupUri *uri;
-+      SoupURI *uri;
-       if (audioscrobbler->priv->soup_session) {
-               uri = rb_proxy_config_get_libsoup_uri (config);
-diff -urN rhythmbox-0.11.4/plugins/audioscrobbler/rb-lastfm-gst-src.c rhythmbox-0.11.4.new/plugins/audioscrobbler/rb-lastfm-gst-src.c
---- rhythmbox-0.11.4/plugins/audioscrobbler/rb-lastfm-gst-src.c        2007-06-19 12:38:41.000000000 +0100
-+++ rhythmbox-0.11.4.new/plugins/audioscrobbler/rb-lastfm-gst-src.c    2008-02-06 00:57:27.000000000 +0000
-@@ -25,7 +25,6 @@
- #include "rb-debug.h"
--#include <libsoup/soup.h>
- #include <gst/gst.h>
- #define RB_TYPE_LASTFM_SRC (rb_lastfm_src_get_type())
-diff -urN rhythmbox-0.11.4/plugins/audioscrobbler/rb-lastfm-source.c rhythmbox-0.11.4.new/plugins/audioscrobbler/rb-lastfm-source.c
---- rhythmbox-0.11.4/plugins/audioscrobbler/rb-lastfm-source.c 2007-12-04 03:05:39.000000000 +0000
-+++ rhythmbox-0.11.4.new/plugins/audioscrobbler/rb-lastfm-source.c     2008-02-06 01:01:13.000000000 +0000
-@@ -42,8 +42,8 @@
- #include <gconf/gconf-value.h>
-+#include "rb-soup-compat.h"
- #include <libsoup/soup.h>
--#include <libsoup/soup-uri.h>
- #include "md5.h"
-@@ -100,8 +100,12 @@
- static void rb_lastfm_perform (RBLastfmSource *lastfm,
-                              const char *url,
-                              char *post_data, /* this takes ownership */
--                             SoupMessageCallbackFn response_handler);
-+                             SoupSessionCallback response_handler);
-+#if defined(HAVE_LIBSOUP_2_4)
-+static void rb_lastfm_message_cb (SoupSession *session, SoupMessage *req, gpointer user_data);
-+#else
- static void rb_lastfm_message_cb (SoupMessage *req, gpointer user_data);
-+#endif
- static void rb_lastfm_change_station (RBLastfmSource *source, const char *station);
- static void rb_lastfm_proxy_config_changed_cb (RBProxyConfig *config,
-@@ -724,30 +728,29 @@
- rb_lastfm_perform (RBLastfmSource *source,
-                  const char *url,
-                  char *post_data,
--                 SoupMessageCallbackFn response_handler)
-+                 SoupSessionCallback response_handler)
- {
-       SoupMessage *msg;
-       msg = soup_message_new ("GET", url);
-+      soup_message_headers_append (msg->request_headers, "User-Agent", "Rhythmbox/" VERSION);
-       if (msg == NULL)
-               return;
--      soup_message_set_http_version (msg, SOUP_HTTP_1_1);
--
-       rb_debug ("Last.fm communicating with %s", url);
-       if (post_data != NULL) {
-               rb_debug ("POST data: %s", post_data);
-               soup_message_set_request (msg,
-                                         "application/x-www-form-urlencoded",
--                                        SOUP_BUFFER_SYSTEM_OWNED,
-+                                        SOUP_MEMORY_TAKE,
-                                         post_data,
-                                         strlen (post_data));
-       }
-       /* create soup session, if we haven't got one yet */
-       if (!source->priv->soup_session) {
--              SoupUri *uri;
-+              SoupURI *uri;
-               uri = rb_proxy_config_get_libsoup_uri (source->priv->proxy_config);
-               source->priv->soup_session = soup_session_async_new_with_options (
-@@ -759,27 +762,45 @@
-       soup_session_queue_message (source->priv->soup_session,
-                                   msg,
--                                  (SoupMessageCallbackFn) response_handler,
-+                                  response_handler,
-                                   source);
-       source->priv->status = COMMUNICATING;
-       rb_source_notify_status_changed (RB_SOURCE(source));
- }
-+#if defined(HAVE_LIBSOUP_2_4)
-+static void
-+rb_lastfm_message_cb (SoupSession *session, SoupMessage *req, gpointer user_data)
-+#else
- static void
- rb_lastfm_message_cb (SoupMessage *req, gpointer user_data)
-+#endif
- {
-       RBLastfmSource *source = RB_LASTFM_SOURCE (user_data);
--      char *body;
-       char **pieces;
-       int i;
-+      const char *body;
-+
-+#if defined(HAVE_LIBSOUP_2_2)
-+      char *free_body;
-       if ((req->response).body == NULL) {
-               rb_debug ("Lastfm: Server failed to respond");
-               return;
-       }
--      body = g_malloc0 ((req->response).length + 1);
--      memcpy (body, (req->response).body, (req->response).length);
-+      free_body = g_malloc0 ((req->response).length + 1);
-+      memcpy (free_body, (req->response).body, (req->response).length);
-+      g_strstrip (free_body);
-+
-+      body = free_body;
-+#else
-+      if (req->response_body->length == 0) {
-+              rb_debug ("Lastfm: Server failed to respond");
-+              return;
-+      }
-+      body = req->response_body->data;
-+#endif
-       rb_debug ("response body: %s", body);
-@@ -787,7 +808,6 @@
-               source->priv->status = NO_ARTIST;
-       }
--      g_strstrip (body);
-       pieces = g_strsplit (body, "\n", 0);
-       for (i = 0; pieces[i] != NULL; i++) {
-               gchar **values = g_strsplit (pieces[i], "=", 2);
-@@ -856,10 +876,14 @@
-                       rhythmdb_commit (source->priv->db);
-               }
-+
-+              g_strfreev (values);
-       }
-       g_strfreev (pieces);
--      g_free (body);
-+#if defined(HAVE_LIBSOUP_2_2)
-+      g_free (free_body);
-+#endif
-       /* doesn't work yet
-       if (source->priv->pending_entry) {
-@@ -898,7 +922,7 @@
- rb_lastfm_proxy_config_changed_cb (RBProxyConfig *config,
-                                          RBLastfmSource *source)
- {
--      SoupUri *uri;
-+      SoupURI *uri;
-       if (source->priv->soup_session) {
-               uri = rb_proxy_config_get_libsoup_uri (config);
-@@ -1163,10 +1187,16 @@
-       g_free(title);
- }
-+#if defined(HAVE_LIBSOUP_2_4)
-+static void
-+rb_lastfm_source_metadata_cb (SoupSession *session, SoupMessage *req, RBLastfmSource *source)
-+#else
- static void
- rb_lastfm_source_metadata_cb (SoupMessage *req, RBLastfmSource *source)
-+#endif
- {
--      char *body;
-+      const char *body;
-+      char *free_body;
-       char **pieces;
-       int p;
-       RhythmDBEntry *entry;
-@@ -1179,10 +1209,16 @@
-       }
-       rb_debug ("got response to metadata request");
--      body = g_malloc0 ((req->response).length + 1);
--      memcpy (body, (req->response).body, (req->response).length);
-+#if defined(HAVE_LIBSOUP_2_4)
-+      body = req->response_body->data;
-+      free_body = NULL;
-+#else
-+      free_body = g_malloc0 ((req->response).length + 1);
-+      memcpy (free_body, (req->response).body, (req->response).length);
-+      g_strstrip (free_body);
-+      body = free_body;
-+#endif
--      g_strstrip (body);
-       pieces = g_strsplit (body, "\n", 0);
-       found_cover = FALSE;
-@@ -1238,7 +1274,9 @@
-       }
-       g_strfreev (pieces);
--      g_free (body);
-+#if defined(HAVE_LIBSOUP_2_2)
-+      g_free (free_body);
-+#endif
-       if (found_cover == FALSE) {
-               GValue v = {0,};
-@@ -1271,7 +1309,7 @@
-                              source->priv->base_url,
-                              source->priv->base_path,
-                              source->priv->session);
--      rb_lastfm_perform (source, uri, NULL, (SoupMessageCallbackFn) rb_lastfm_source_metadata_cb);
-+      rb_lastfm_perform (source, uri, NULL, (SoupSessionCallback) rb_lastfm_source_metadata_cb);
-       g_free (uri);
-       /* re-enable actions */
-diff -urN rhythmbox-0.11.4/plugins/daap/rb-daap-connection.c rhythmbox-0.11.4.new/plugins/daap/rb-daap-connection.c
---- rhythmbox-0.11.4/plugins/daap/rb-daap-connection.c 2007-11-22 08:23:50.000000000 +0000
-+++ rhythmbox-0.11.4.new/plugins/daap/rb-daap-connection.c     2008-02-06 00:57:27.000000000 +0000
-@@ -33,10 +33,8 @@
- #include <glib/gi18n.h>
- #include <gdk/gdk.h>
-+#include "rb-soup-compat.h"
- #include <libsoup/soup.h>
--#include <libsoup/soup-connection.h>
--#include <libsoup/soup-session-sync.h>
--#include <libsoup/soup-uri.h>
- #include "rb-daap-hash.h"
- #include "rb-daap-connection.h"
-@@ -84,7 +82,7 @@
-       gboolean is_connecting;
-       SoupSession *session;
--      SoupUri *base_uri;
-+      SoupURI *base_uri;
-       gchar *daap_base_uri;
-       gdouble daap_version;
-@@ -329,7 +327,7 @@
- {
-       RBDAAPConnectionPrivate *priv = connection->priv;
-       SoupMessage *message = NULL;
--      SoupUri *uri = NULL;
-+      SoupURI *uri = NULL;
-       uri = soup_uri_new_with_base (priv->base_uri, path);
-       if (uri == NULL) {
-@@ -337,14 +335,13 @@
-       }
-       message = soup_message_new_from_uri (SOUP_METHOD_GET, uri);
--      soup_message_set_http_version (message, SOUP_HTTP_1_1);
--      soup_message_add_header (message->request_headers, "Client-DAAP-Version",       "3.0");
--      soup_message_add_header (message->request_headers, "Accept-Language",           "en-us, en;q=5.0");
-+      soup_message_headers_append (message->request_headers, "Client-DAAP-Version",           "3.0");
-+      soup_message_headers_append (message->request_headers, "Accept-Language",               "en-us, en;q=5.0");
- #ifdef HAVE_LIBZ
--      soup_message_add_header (message->request_headers, "Accept-Encoding",           "gzip");
-+      soup_message_headers_append (message->request_headers, "Accept-Encoding",               "gzip");
- #endif
--      soup_message_add_header (message->request_headers, "Client-DAAP-Access-Index",  "2");
-+      soup_message_headers_append (message->request_headers, "Client-DAAP-Access-Index",      "2");
-       if (priv->password_protected) {
-               char *h;
-@@ -352,13 +349,17 @@
-               char *token;
-               user_pass = g_strdup_printf ("%s:%s", priv->username, priv->password);
-+#if defined(HAVE_LIBSOUP_2_4)
-+              token = g_base64_encode ((guchar *)user_pass, strlen (user_pass));
-+#else
-               token = soup_base64_encode (user_pass, strlen (user_pass));
-+#endif
-               h = g_strdup_printf ("Basic %s", token);
-               g_free (token);
-               g_free (user_pass);
--              soup_message_add_header (message->request_headers, "Authorization", h);
-+              soup_message_headers_append (message->request_headers, "Authorization", h);
-               g_free (h);
-       }
-@@ -372,10 +373,10 @@
-               rb_daap_hash_generate ((short)floor (version), (const guchar*)no_daap_path, 2, (guchar*)hash, req_id);
--              soup_message_add_header (message->request_headers, "Client-DAAP-Validation", hash);
-+              soup_message_headers_append (message->request_headers, "Client-DAAP-Validation", hash);
-       }
-       if (send_close) {
--              soup_message_add_header (message->request_headers, "Connection", "close");
-+              soup_message_headers_append (message->request_headers, "Connection", "close");
-       }
-       soup_uri_free (uri);
-@@ -425,16 +426,22 @@
- {
-       RBDAAPConnectionPrivate *priv;
-       GNode *structure;
--      char *response;
-+      char *new_response = NULL;
-+      const char *response;
-       const char *encoding_header;
-       char *message_path;
-       int response_length;
-       priv = data->connection->priv;
-       structure = NULL;
--      response = data->message->response.body;
-       encoding_header = NULL;
-+#if defined(HAVE_LIBSOUP_2_4)
-+      response = data->message->response_body->data;
-+      response_length = data->message->response_body->length;
-+#else
-+      response = data->message->response.body;
-       response_length = data->message->response.length;
-+#endif
-       message_path = soup_uri_to_string (soup_message_get_uri (data->message), FALSE);
-@@ -444,13 +451,12 @@
-                 data->message->reason_phrase);
-       if (data->message->response_headers) {
--              encoding_header = soup_message_get_header (data->message->response_headers, "Content-Encoding");
-+              encoding_header = soup_message_headers_get (data->message->response_headers, "Content-Encoding");
-       }
-       if (SOUP_STATUS_IS_SUCCESSFUL (data->status) && encoding_header && strcmp (encoding_header, "gzip") == 0) {
- #ifdef HAVE_LIBZ
-               z_stream stream;
--              char *new_response;
-               unsigned int factor = 4;
-               unsigned int unc_size = response_length * factor;
-@@ -575,19 +581,23 @@
-               rb_daap_structure_destroy (structure);
-       }
--      if (response != data->message->response.body) {
--              g_free (response);
--      }
--
-+      g_free (new_response);
-       g_free (message_path);
-       g_object_unref (G_OBJECT (data->connection));
-       g_object_unref (G_OBJECT (data->message));
-       g_free (data);
- }
-+#if defined(HAVE_LIBSOUP_2_4)
-+static void
-+http_response_handler (SoupSession      *session,
-+                     SoupMessage      *message,
-+                     RBDAAPConnection *connection)
-+#else
- static void
- http_response_handler (SoupMessage      *message,
-                      RBDAAPConnection *connection)
-+#endif
- {
-       DAAPResponseData *data;
-       int response_length;
-@@ -599,7 +609,11 @@
-       data = g_new0 (DAAPResponseData, 1);
-       data->status = message->status_code;
-+#if defined(HAVE_LIBSOUP_2_4)
-+      response_length = message->response_body->length;
-+#else
-       response_length = message->response.length;
-+#endif
-       g_object_ref (G_OBJECT (connection));
-       data->connection = connection;
-@@ -655,7 +669,7 @@
-       priv->use_response_handler_thread = use_thread;
-       priv->response_handler = handler;
-       soup_session_queue_message (priv->session, message,
--                                  (SoupMessageCallbackFn) http_response_handler,
-+                                  (SoupSessionCallback) http_response_handler,
-                                   connection);
-       rb_debug ("Queued message for http://%s:%d/%s",
-                 priv->base_uri->host,
-@@ -1662,7 +1676,11 @@
-               char *token;
-               user_pass = g_strdup_printf ("%s:%s", priv->username, priv->password);
-+#if defined(HAVE_LIBSOUP_2_4)
-+              token = g_base64_encode ((guchar *)user_pass, strlen (user_pass));
-+#else
-               token = soup_base64_encode (user_pass, strlen (user_pass));
-+#endif
-               g_string_append_printf (headers, "Authentication: Basic %s\r\n", token);
-               g_free (token);
-               g_free (user_pass);
-diff -urN rhythmbox-0.11.4/plugins/daap/rb-daap-plugin.c rhythmbox-0.11.4.new/plugins/daap/rb-daap-plugin.c
---- rhythmbox-0.11.4/plugins/daap/rb-daap-plugin.c     2007-09-03 08:24:09.000000000 +0100
-+++ rhythmbox-0.11.4.new/plugins/daap/rb-daap-plugin.c 2008-02-06 00:57:27.000000000 +0000
-@@ -29,8 +29,8 @@
- #include <glib.h>
- #include <glib-object.h>
-+#include "rb-soup-compat.h"
- #include <libsoup/soup.h>
--#include <libsoup/soup-address.h>
- #include "rb-daap-plugin.h"
- #include "rb-debug.h"
-@@ -647,6 +647,9 @@
-       g_free (host);
-       soup_address_resolve_async (addr,
-+#if defined(HAVE_LIBSOUP_2_4)
-+                                  NULL, NULL,
-+#endif
-                                   (SoupAddressCallback) new_daap_share_resolve_cb,
-                                   data);
- }
-diff -urN rhythmbox-0.11.4/plugins/daap/rb-daap-share.c rhythmbox-0.11.4.new/plugins/daap/rb-daap-share.c
---- rhythmbox-0.11.4/plugins/daap/rb-daap-share.c      2007-11-08 13:09:20.000000000 +0000
-+++ rhythmbox-0.11.4.new/plugins/daap/rb-daap-share.c  2008-02-06 00:57:27.000000000 +0000
-@@ -27,13 +27,9 @@
- #include <glib/gi18n.h>
- #include <gtk/gtk.h>
-+
-+#include "rb-soup-compat.h"
- #include <libsoup/soup.h>
--#include <libsoup/soup-address.h>
--#include <libsoup/soup-message.h>
--#include <libsoup/soup-uri.h>
--#include <libsoup/soup-server.h>
--#include <libsoup/soup-server-auth.h>
--#include <libsoup/soup-server-message.h>
- #include <libgnomevfs/gnome-vfs.h>
- #include "rb-daap-share.h"
-@@ -513,20 +509,22 @@
- static void
- message_add_standard_headers (SoupMessage *message)
- {
-+#if defined(HAVE_LIBSOUP_2_2)
-       gchar *s;
-       time_t t;
-       struct tm *tm;
--      soup_message_add_header (message->response_headers, "DAAP-Server", "Rhythmbox " VERSION);
--
--      soup_message_add_header (message->response_headers, "Content-Type", "application/x-dmap-tagged");
--
-       t = time (NULL);
-       tm = gmtime (&t);
-       s = g_new (gchar, 100);
-       strftime (s, 100, "%a, %d %b %Y %T GMT", tm);
--      soup_message_add_header (message->response_headers, "Date", s);
-+      soup_message_headers_append (message->response_headers, "Date", s);
-       g_free (s);
-+#endif
-+      
-+      soup_message_headers_append (message->response_headers, "DAAP-Server", "Rhythmbox " VERSION);
-+
-+      soup_message_headers_append (message->response_headers, "Content-Type", "application/x-dmap-tagged");
- }
- static void
-@@ -543,14 +541,15 @@
-               return;
-       }
--      message->response.owner = SOUP_BUFFER_SYSTEM_OWNED;
--      message->response.length = length;
--      message->response.body = resp;
-+      soup_message_set_response (message, "application/x-dmap-tagged", SOUP_MEMORY_TAKE, resp, length);
-+
-+#if defined(HAVE_LIBSOUP_2_2)
-+      soup_server_message_set_encoding (SOUP_SERVER_MESSAGE (message), SOUP_TRANSFER_CONTENT_LENGTH);
-+#endif
-       message_add_standard_headers (message);
-       soup_message_set_status (message, SOUP_STATUS_OK);
--      soup_server_message_set_encoding (SOUP_SERVER_MESSAGE (message), SOUP_TRANSFER_CONTENT_LENGTH);
- }
- #define DMAP_STATUS_OK 200
-@@ -559,10 +558,20 @@
- #define DAAP_VERSION 3.0
- #define DMAP_TIMEOUT 1800
-+#if defined(HAVE_LIBSOUP_2_4)
-+static void
-+server_info_cb (SoupServer        *server,
-+              SoupMessage       *message,
-+              const char        *path,
-+              GHashTable        *query,
-+              SoupClientContext *context,
-+              RBDAAPShare       *share)
-+#else
- static void
- server_info_cb (RBDAAPShare *share,
-               SoupServerContext *context,
-               SoupMessage *message)
-+#endif
- {
- /* MSRV       server info response
-  *    MSTT status
-@@ -619,10 +628,20 @@
-       rb_daap_structure_destroy (msrv);
- }
-+#if defined(HAVE_LIBSOUP_2_4)
-+static void
-+content_codes_cb (SoupServer        *server,
-+                SoupMessage       *message,
-+                const char        *path,
-+                GHashTable        *query,
-+                SoupClientContext *context,
-+                RBDAAPShare       *share)
-+#else
- static void
- content_codes_cb (RBDAAPShare *share,
-                 SoupServerContext *context,
-                 SoupMessage *message)
-+#endif
- {
- /* MCCR content codes response
-  *    MSTT status
-@@ -656,6 +675,48 @@
-       rb_daap_structure_destroy (mccr);
- }
-+#if defined(HAVE_LIBSOUP_2_4)
-+static gboolean
-+get_session_id (GHashTable *query,
-+              guint32    *id)
-+{
-+      char *session_id_str;
-+      guint32 session_id;
-+
-+      session_id_str = g_hash_table_lookup (query, "session-id");
-+      if (session_id_str == NULL) {
-+              rb_debug ("session id not found");
-+              return FALSE;
-+      }
-+
-+      session_id = (guint32) strtoul (session_id_str, NULL, 10);
-+      if (id != NULL) {
-+              *id = session_id;
-+      }
-+      return TRUE;
-+}
-+
-+static gboolean
-+get_revision_number (GHashTable *query,
-+                   guint *number)
-+{
-+      char *revision_number_str;
-+      guint revision_number;
-+
-+      revision_number_str = g_hash_table_lookup (query, "revision-number");
-+      if (revision_number_str == NULL) {
-+              rb_debug ("client asked for an update without a revision number?!?");
-+              return FALSE;
-+      }
-+
-+      revision_number = strtoul (revision_number_str, NULL, 10);
-+      if (number != NULL) {
-+              *number = revision_number;
-+      }
-+      return TRUE;
-+}
-+
-+#else
- static gboolean
- message_get_session_id (SoupMessage *message,
-                       guint32     *id)
-@@ -729,11 +790,13 @@
-       return TRUE;
- }
-+#endif
- static gboolean
- session_id_validate (RBDAAPShare       *share,
--                   SoupServerContext *context,
-+                   SoupClientContext *context,
-                    SoupMessage       *message,
-+                   GHashTable        *query,          /* NULL w/ libsoup 2.2 */
-                    guint32           *id)
- {
-       guint32     session_id;
-@@ -745,7 +808,11 @@
-               *id = 0;
-       }
-+#if defined(HAVE_LIBSOUP_2_4)
-+      res = get_session_id (query, &session_id);
-+#else
-       res = message_get_session_id (message, &session_id);
-+#endif
-       if (! res) {
-               rb_debug ("Validation failed: Unable to parse session id from message");
-               return FALSE;
-@@ -758,7 +825,7 @@
-               return FALSE;
-       }
--      remote_address = soup_server_context_get_client_host (context);
-+      remote_address = soup_client_context_get_host (context);
-       rb_debug ("Validating session id %u from %s matches %s",
-                 session_id, remote_address, addr);
-       if (remote_address == NULL || strcmp (addr, remote_address) != 0) {
-@@ -775,7 +842,7 @@
- static guint32
- session_id_generate (RBDAAPShare       *share,
--                   SoupServerContext *context)
-+                   SoupClientContext *context)
- {
-       guint32 id;
-@@ -786,7 +853,7 @@
- static guint32
- session_id_create (RBDAAPShare       *share,
--                 SoupServerContext *context)
-+                 SoupClientContext *context)
- {
-       guint32     id;
-       const char *addr;
-@@ -802,7 +869,7 @@
-       } while (addr != NULL);
-       /* store session id and remote address */
--      remote_address = g_strdup (soup_server_context_get_client_host (context));
-+      remote_address = g_strdup (soup_client_context_get_host (context));
-       g_hash_table_insert (share->priv->session_ids, GUINT_TO_POINTER (id), remote_address);
-       return id;
-@@ -810,16 +877,26 @@
- static void
- session_id_remove (RBDAAPShare       *share,
--                 SoupServerContext *context,
-+                 SoupClientContext *context,
-                  guint32            id)
- {
-       g_hash_table_remove (share->priv->session_ids, GUINT_TO_POINTER (id));
- }
-+#if defined(HAVE_LIBSOUP_2_4)
- static void
--login_cb (RBDAAPShare *share,
-+login_cb (SoupServer        *server,
-+        SoupMessage       *message,
-+        const char        *path,
-+        GHashTable        *query,
-+        SoupClientContext *context,
-+        RBDAAPShare       *share)
-+#else
-+static void
-+login_cb (RBDAAPShare       *share,
-         SoupServerContext *context,
--        SoupMessage *message)
-+        SoupMessage       *message)
-+#endif
- {
- /* MLOG login response
-  *    MSTT status
-@@ -840,15 +917,28 @@
-       rb_daap_structure_destroy (mlog);
- }
-+#if defined(HAVE_LIBSOUP_2_4)
-+static void
-+logout_cb (SoupServer        *server,
-+         SoupMessage       *message,
-+         const char        *path,
-+         GHashTable        *query,
-+         SoupClientContext *context,
-+         RBDAAPShare       *share)
-+#else
- static void
- logout_cb (RBDAAPShare *share,
-          SoupServerContext *context,
-          SoupMessage *message)
-+#endif
- {
-       int     status;
-       guint32 id;
-+#if defined(HAVE_LIBSOUP_2_2)
-+      GHashTable *query = NULL;
-+#endif
--      if (session_id_validate (share, context, message, &id)) {
-+      if (session_id_validate (share, context, message, query, &id)) {
-               rb_debug ("Handling logout session id %u", id);
-               session_id_remove (share, context, id);
-@@ -858,18 +948,34 @@
-       }
-       soup_message_set_status (message, status);
-+#if defined(HAVE_LIBSOUP_2_2)
-       soup_server_message_set_encoding (SOUP_SERVER_MESSAGE (message), SOUP_TRANSFER_CONTENT_LENGTH);
-+#endif
- }
-+#if defined(HAVE_LIBSOUP_2_4)
-+static void
-+update_cb (SoupServer        *server,
-+         SoupMessage       *message,
-+         const char        *path,
-+         GHashTable        *query,
-+         SoupClientContext *context,
-+         RBDAAPShare       *share)
-+#else
- static void
- update_cb (RBDAAPShare *share,
-          SoupServerContext *context,
-          SoupMessage *message)
-+#endif
- {
-       guint    revision_number;
-       gboolean res;
-+#if defined(HAVE_LIBSOUP_2_4)
-+      res = get_revision_number (query, &revision_number);
-+#else
-       res = message_get_revision_number (message, &revision_number);
-+#endif
-       if (res && revision_number != share->priv->revision_number) {
-               /* MUPD update response
-@@ -885,8 +991,15 @@
-               message_set_from_rb_daap_structure (message, mupd);
-               rb_daap_structure_destroy (mupd);
-       } else {
-+              /* FIXME: This seems like a bug. It just leaks the
-+               * message (and socket) without ever replying.
-+               */
-               g_object_ref (message);
-+#if defined(HAVE_LIBSOUP_2_4)
-+              soup_server_pause_message (server, message);
-+#else
-               soup_message_io_pause (message);
-+#endif
-       }
- }
-@@ -1148,14 +1261,47 @@
- }
- static bitwise
-+parse_meta_str (const char *attrs)
-+{
-+      gchar **attrsv;
-+      guint i;
-+      bitwise bits = 0;
-+      
-+      attrsv = g_strsplit (attrs, ",", -1);
-+
-+      for (i = 0; attrsv[i]; i++) {
-+              guint j;
-+
-+              for (j = 0; j < G_N_ELEMENTS (meta_data_map); j++) {
-+                      if (strcmp (meta_data_map[j].tag, attrsv[i]) == 0) {
-+                              bits |= (((bitwise) 1) << meta_data_map[j].md);
-+                      }
-+              }
-+      }
-+      
-+      g_strfreev (attrsv);
-+
-+      return bits;
-+}
-+
-+#if defined(HAVE_LIBSOUP_2_4)
-+static bitwise
-+parse_meta (GHashTable *query)
-+{
-+      const gchar *attrs;
-+
-+      attrs = g_hash_table_lookup (query, "meta");
-+      return parse_meta_str (attrs);
-+}
-+
-+#else
-+static bitwise
- parse_meta (const gchar *s)
- {
-+      bitwise bits;
-       gchar *start_of_attrs;
-       gchar *end_of_attrs;
-       gchar *attrs;
--      gchar **attrsv;
--      guint i;
--      bitwise bits = 0;
-       start_of_attrs = strstr (s, "meta=");
-       if (start_of_attrs == NULL) {
-@@ -1170,23 +1316,12 @@
-               attrs = g_strdup (start_of_attrs);
-       }
--      attrsv = g_strsplit (attrs,",",-1);
--
--      for (i = 0; attrsv[i]; i++) {
--              guint j;
--
--              for (j = 0; j < G_N_ELEMENTS (meta_data_map); j++) {
--                      if (strcmp (meta_data_map[j].tag, attrsv[i]) == 0) {
--                              bits |= (((bitwise) 1) << meta_data_map[j].md);
--                      }
--              }
--      }
--
-+      bits = parse_meta_str (attrs);
-       g_free (attrs);
--      g_strfreev (attrsv);
-       return bits;
- }
-+#endif
- static void
- write_next_chunk (SoupMessage *message, GnomeVFSHandle *handle)
-@@ -1197,10 +1332,18 @@
-       result = gnome_vfs_read (handle, chunk, DAAP_SHARE_CHUNK_SIZE, &read_size);
-       if (result == GNOME_VFS_OK && read_size > 0) {
-+#if defined(HAVE_LIBSOUP_2_4)
-+              soup_message_body_append (message->response_body, SOUP_MEMORY_TAKE, chunk, read_size);
-+#else
-               soup_message_add_chunk (message, SOUP_BUFFER_SYSTEM_OWNED, chunk, read_size);
-+#endif
-       } else {
-               g_free (chunk);
-+#if defined(HAVE_LIBSOUP_2_4)
-+              soup_message_body_complete (message->response_body);
-+#else
-               soup_message_add_final_chunk (message);
-+#endif
-       }
- }
-@@ -1238,7 +1381,11 @@
-               file_size -= offset;
-       }
-+#if defined(HAVE_LIBSOUP_2_4)
-+      soup_message_headers_set_encoding (message->response_headers, SOUP_ENCODING_CHUNKED);
-+#else
-       soup_server_message_set_encoding (SOUP_SERVER_MESSAGE (message), SOUP_TRANSFER_CHUNKED);
-+#endif
-       g_signal_connect (message, "wrote_chunk", G_CALLBACK (write_next_chunk), handle);
-       g_signal_connect (message, "finished", G_CALLBACK (chunked_message_finished), handle);
-@@ -1268,11 +1415,14 @@
-               g_warning ("Unable to map file %s: %s", path, error->message);
-               soup_message_set_status (message, SOUP_STATUS_INTERNAL_SERVER_ERROR);
-       } else {
--              message->response.owner = SOUP_BUFFER_USER_OWNED;
--              message->response.length = file_size;
--              message->response.body = g_mapped_file_get_contents (mapped_file) + offset;
-+              soup_message_set_response (message, "application/x-dmap-tagged",
-+                                         SOUP_MEMORY_TEMPORARY,
-+                                         g_mapped_file_get_contents (mapped_file) + offset,
-+                                         file_size);
-+#if defined(HAVE_LIBSOUP_2_2)
-               soup_server_message_set_encoding (SOUP_SERVER_MESSAGE (message),
-                                                 SOUP_TRANSFER_CONTENT_LENGTH);
-+#endif
-               g_signal_connect (message,
-                                 "finished",
-@@ -1283,22 +1433,40 @@
- }
- #endif
-+#if defined(HAVE_LIBSOUP_2_4)
-+static void
-+databases_cb (SoupServer        *server,
-+            SoupMessage       *message,
-+            const char        *path,
-+            GHashTable        *query,
-+            SoupClientContext *context,
-+            RBDAAPShare       *share)
-+
-+#else
- static void
- databases_cb (RBDAAPShare *share,
-             SoupServerContext *context,
-             SoupMessage *message)
-+#endif
- {
--      gchar *path;
--      gchar *rest_of_path;
-+      const char *rest_of_path;
-       /*guint revision_number;*/
-+#if defined(HAVE_LIBSOUP_2_2)
-+      GHashTable *query = NULL;
-+      gchar *path;
-+#endif
--      if (! session_id_validate (share, context, message, NULL)) {
-+      if (! session_id_validate (share, context, message, query, NULL)) {
-               soup_message_set_status (message, SOUP_STATUS_FORBIDDEN);
-+#if defined(HAVE_LIBSOUP_2_2)
-               soup_server_message_set_encoding (SOUP_SERVER_MESSAGE (message), SOUP_TRANSFER_CONTENT_LENGTH);
-+#endif
-               return;
-       }
-+#if defined(HAVE_LIBSOUP_2_2)
-       path = soup_uri_to_string (soup_message_get_uri (message), TRUE);
-+#endif
-       rest_of_path = strchr (path + 1, '/');
-@@ -1335,7 +1503,11 @@
-               message_set_from_rb_daap_structure (message, avdb);
-               rb_daap_structure_destroy (avdb);
-+#if defined(HAVE_LIBSOUP_2_4)
-+      } else if (g_ascii_strcasecmp ("/1/items", rest_of_path) == 0) {
-+#else
-       } else if (g_ascii_strncasecmp ("/1/items?", rest_of_path, 9) == 0) {
-+#endif
-       /* ADBS database songs
-        *      MSTT status
-        *      MUTY update type
-@@ -1351,7 +1523,11 @@
-               gint32 num_songs = rhythmdb_entry_count_by_type (share->priv->db, share->priv->entry_type);
-               struct MLCL_Bits mb = {NULL,0};
-+#if defined(HAVE_LIBSOUP_2_4)
-+              mb.bits = parse_meta (query);
-+#else
-               mb.bits = parse_meta (rest_of_path);
-+#endif
-               adbs = rb_daap_structure_add (NULL, RB_DAAP_CC_ADBS);
-               rb_daap_structure_add (adbs, RB_DAAP_CC_MSTT, (gint32) DMAP_STATUS_OK);
-@@ -1365,7 +1541,11 @@
-               message_set_from_rb_daap_structure (message, adbs);
-               rb_daap_structure_destroy (adbs);
-               adbs = NULL;
-+#if defined(HAVE_LIBSOUP_2_4)
-+      } else if (g_ascii_strcasecmp ("/1/containers", rest_of_path) == 0) {
-+#else
-       } else if (g_ascii_strncasecmp ("/1/containers?", rest_of_path, 14) == 0) {
-+#endif
-       /* APLY database playlists
-        *      MSTT status
-        *      MUTY update type
-@@ -1402,6 +1582,7 @@
-               message_set_from_rb_daap_structure (message, aply);
-               rb_daap_structure_destroy (aply);
-+
-       } else if (g_ascii_strncasecmp ("/1/containers/", rest_of_path, 14) == 0) {
-       /* APSO playlist songs
-        *      MSTT status
-@@ -1420,7 +1601,11 @@
-               struct MLCL_Bits mb = {NULL,0};
-               gint pl_id = atoi (rest_of_path + 14);
-+#if defined(HAVE_LIBSOUP_2_4)
-+              mb.bits = parse_meta (query);
-+#else
-               mb.bits = parse_meta (rest_of_path);
-+#endif
-               apso = rb_daap_structure_add (NULL, RB_DAAP_CC_APSO);
-               rb_daap_structure_add (apso, RB_DAAP_CC_MSTT, (gint32) DMAP_STATUS_OK);
-@@ -1447,9 +1632,11 @@
-                                                 _find_by_id);
-                       if (idl == NULL) {
-                               soup_message_set_status (message, SOUP_STATUS_NOT_FOUND);
-+#if defined(HAVE_LIBSOUP_2_2)
-                               soup_server_message_set_encoding (SOUP_SERVER_MESSAGE (message),
-                                                                 SOUP_TRANSFER_CONTENT_LENGTH);
-                               soup_message_set_response (message, "text/plain", SOUP_BUFFER_USER_OWNED, "", 0);
-+#endif
-                               goto out;
-                       }
-                       id = (RBPlaylistID *)idl->data;
-@@ -1470,7 +1657,7 @@
-               rb_daap_structure_destroy (apso);
-       } else if (g_ascii_strncasecmp ("/1/items/", rest_of_path, 9) == 0) {
-       /* just the file :) */
--              gchar *id_str;
-+              const gchar *id_str;
-               gint id;
-               RhythmDBEntry *entry;
-               const gchar *location;
-@@ -1486,9 +1673,9 @@
-               file_size = rhythmdb_entry_get_uint64 (entry, RHYTHMDB_PROP_FILE_SIZE);
-               message_add_standard_headers (message);
--              soup_message_add_header (message->response_headers, "Accept-Ranges", "bytes");
-+              soup_message_headers_append (message->response_headers, "Accept-Ranges", "bytes");
--              range_header = soup_message_get_header (message->request_headers, "Range");
-+              range_header = soup_message_headers_get (message->request_headers, "Range");
-               if (range_header) {
-                       const gchar *s;
-                       gchar *content_range;
-@@ -1497,7 +1684,7 @@
-                       offset = atoll (s);
-                       content_range = g_strdup_printf ("bytes %" G_GUINT64_FORMAT "-%" G_GUINT64_FORMAT "/%" G_GUINT64_FORMAT, offset, file_size, file_size);
--                      soup_message_add_header (message->response_headers, "Content-Range", content_range);
-+                      soup_message_headers_append (message->response_headers, "Content-Range", content_range);
-                       g_free (content_range);
-                       soup_message_set_status (message, SOUP_STATUS_PARTIAL_CONTENT);
-@@ -1522,9 +1709,92 @@
-       }
- out:
-+#if defined(HAVE_LIBSOUP_2_2)
-       g_free (path);
-+#else
-+      ;
-+#endif
-+}
-+
-+static void
-+db_entry_added_cb (RhythmDB *db,
-+                 RhythmDBEntry *entry,
-+                 RBDAAPShare *share)
-+{
-+      /* TODO: update our db version number? */
-+}
-+
-+static void
-+add_db_entry (RhythmDBEntry *entry,
-+            RBDAAPShare *share)
-+{
-+      db_entry_added_cb (share->priv->db, entry, share);
-+}
-+
-+static void
-+db_entry_deleted_cb (RhythmDB *db,
-+                   RhythmDBEntry *entry,
-+                   RBDAAPShare *share)
-+{
-+      /* TODO: update our db version number? */
-+}
-+
-+static void
-+db_entry_changed_cb (RhythmDB *db,
-+                   RhythmDBEntry *entry,
-+                   GSList *changes,
-+                   RBDAAPShare *share)
-+{
-+      if (rhythmdb_entry_get_boolean (entry, RHYTHMDB_PROP_HIDDEN)) {
-+              db_entry_deleted_cb (db, entry, share);
-+      } else {
-+              db_entry_added_cb (db, entry, share);
-+      }
-+}
-+
-+#if defined(HAVE_LIBSOUP_2_4)
-+
-+static gboolean
-+soup_auth_filter (SoupAuthDomain *auth_domain,
-+                SoupMessage    *msg,
-+                gpointer        user_data)
-+{
-+      const char *path;
-+
-+      path = soup_message_get_uri (msg)->path;
-+      if (g_str_has_prefix (path, "/databases/")) {
-+              /* Subdirectories of /databases don't actually require
-+               * authentication
-+               */
-+              return FALSE;
-+      } else {
-+              /* Everything else in auth_domain's paths, including
-+               * /databases itself, does require auth.
-+               */
-+              return TRUE;
-+      }
- }
-+static gboolean
-+soup_auth_callback (SoupAuthDomain *auth_domain,
-+                  SoupMessage    *msg,
-+                  const char     *username,
-+                  gpointer        password,
-+                  RBDAAPShare    *share)
-+{
-+      gboolean    allowed;
-+      const char *path;
-+
-+      path = soup_message_get_uri (msg)->path;
-+      rb_debug ("Auth request for %s, user %s", path, username);
-+
-+      allowed = !strcmp (password, share->priv->password);
-+      rb_debug ("Auth request: %s", allowed ? "ALLOWED" : "DENIED");
-+
-+      return allowed;
-+}
-+
-+#else
- typedef void (* DAAPPathFunction) (RBDAAPShare       *share,
-                                  SoupServerContext *context,
-                                  SoupMessage       *message);
-@@ -1567,42 +1837,6 @@
-       g_free (path);
- }
--static void
--db_entry_added_cb (RhythmDB *db,
--                 RhythmDBEntry *entry,
--                 RBDAAPShare *share)
--{
--      /* TODO: update our db version number? */
--}
--
--static void
--add_db_entry (RhythmDBEntry *entry,
--            RBDAAPShare *share)
--{
--      db_entry_added_cb (share->priv->db, entry, share);
--}
--
--static void
--db_entry_deleted_cb (RhythmDB *db,
--                   RhythmDBEntry *entry,
--                   RBDAAPShare *share)
--{
--      /* TODO: update our db version number? */
--}
--
--static void
--db_entry_changed_cb (RhythmDB *db,
--                   RhythmDBEntry *entry,
--                   GSList *changes,
--                   RBDAAPShare *share)
--{
--      if (rhythmdb_entry_get_boolean (entry, RHYTHMDB_PROP_HIDDEN)) {
--              db_entry_deleted_cb (db, entry, share);
--      } else {
--              db_entry_added_cb (db, entry, share);
--      }
--}
--
- static gboolean
- soup_auth_callback (SoupServerAuthContext *auth_ctx,
-                     SoupServerAuth        *auth,
-@@ -1642,12 +1876,14 @@
-       return allowed;
- }
-+#endif
-+
-+
- static gboolean
- rb_daap_share_server_start (RBDAAPShare *share)
- {
-       int                   port = STANDARD_DAAP_PORT;
-       gboolean              password_required;
--      SoupServerAuthContext auth_ctx = { 0 };
-       share->priv->server = soup_server_new (SOUP_SERVER_PORT, port, NULL);
-       if (share->priv->server == NULL) {
-@@ -1666,6 +1902,22 @@
-       password_required = (share->priv->auth_method != RB_DAAP_SHARE_AUTH_METHOD_NONE);
-       if (password_required) {
-+#if defined(HAVE_LIBSOUP_2_4)
-+              SoupAuthDomain *auth_domain;
-+
-+              auth_domain = soup_auth_domain_basic_new (SOUP_AUTH_DOMAIN_REALM, "Music Sharing",
-+                                                        SOUP_AUTH_DOMAIN_ADD_PATH, "/login",
-+                                                        SOUP_AUTH_DOMAIN_ADD_PATH, "/update",
-+                                                        SOUP_AUTH_DOMAIN_ADD_PATH, "/database",
-+                                                        SOUP_AUTH_DOMAIN_FILTER, soup_auth_filter,
-+                                                        NULL);
-+              soup_auth_domain_basic_set_auth_callback (auth_domain,
-+                                                        (SoupAuthDomainBasicAuthCallback)soup_auth_callback,
-+                                                        g_object_ref (share),
-+                                                        g_object_unref);
-+              soup_server_add_auth_domain (share->priv->server, auth_domain);
-+#else
-+              SoupServerAuthContext auth_ctx = { 0 };
-               auth_ctx.types = SOUP_AUTH_TYPE_BASIC;
-               auth_ctx.callback = (SoupServerAuthCallbackFn)soup_auth_callback;
-               auth_ctx.user_data = share;
-@@ -1689,14 +1941,36 @@
-                                        (SoupServerCallbackFn)server_cb,
-                                        NULL,
-                                        share);
-+#endif
-       }
-+#if defined(HAVE_LIBSOUP_2_4)
-+      soup_server_add_handler (share->priv->server, "/server-info",
-+                               (SoupServerCallback) server_info_cb,
-+                               share, NULL);
-+      soup_server_add_handler (share->priv->server, "/content-codes",
-+                               (SoupServerCallback) content_codes_cb,
-+                               share, NULL);
-+      soup_server_add_handler (share->priv->server, "/login",
-+                               (SoupServerCallback) login_cb,
-+                               share, NULL);
-+      soup_server_add_handler (share->priv->server, "/logout",
-+                               (SoupServerCallback) logout_cb,
-+                               share, NULL);
-+      soup_server_add_handler (share->priv->server, "/update",
-+                               (SoupServerCallback) update_cb,
-+                               share, NULL);
-+      soup_server_add_handler (share->priv->server, "/databases",
-+                               (SoupServerCallback) databases_cb,
-+                               share, NULL);
-+#else
-       soup_server_add_handler (share->priv->server,
-                                NULL,
-                                NULL,
-                                (SoupServerCallbackFn)server_cb,
-                                NULL,
-                                share);
-+#endif
-       soup_server_run_async (share->priv->server);
-       /* using direct since there is no g_uint_hash or g_uint_equal */
-diff -urN rhythmbox-0.11.4/plugins/daap/rb-daap-src.c rhythmbox-0.11.4.new/plugins/daap/rb-daap-src.c
---- rhythmbox-0.11.4/plugins/daap/rb-daap-src.c        2007-06-17 12:56:21.000000000 +0100
-+++ rhythmbox-0.11.4.new/plugins/daap/rb-daap-src.c    2008-02-06 00:57:27.000000000 +0000
-@@ -34,8 +34,8 @@
- #include <unistd.h>
- #include <ctype.h>
--#include <libsoup/soup-headers.h>
--#include <libsoup/soup-misc.h>
-+#include "rb-soup-compat.h"
-+#include <libsoup/soup.h>
- #include <glib/gi18n.h>
- #include <gst/gst.h>
-@@ -432,7 +432,12 @@
-       gchar *host;
-       guint port;
-       gchar *path;
-+#if defined(HAVE_LIBSOUP_2_4)
-+      SoupMessageHeaders *header_table;
-+#else
-       GHashTable *header_table;
-+      char *dup_headers;
-+#endif
-       gchar *request;
-       gchar *response;
-       gchar *end_headers;
-@@ -441,7 +446,6 @@
-       guint http_status;
-       gchar *http_status_phrase = NULL;
-       gboolean parse_result;
--      char *dup_headers;
-       if (src->buffer_base) {
-               g_free (src->buffer_base);
-@@ -536,6 +540,15 @@
-               return FALSE;
-       }
-+#if defined(HAVE_LIBSOUP_2_4)
-+      header_table = soup_message_headers_new (SOUP_MESSAGE_HEADERS_RESPONSE);
-+      parse_result = soup_headers_parse_response (response,
-+                                                  ((end_headers+2) - response),
-+                                                  header_table,
-+                                                  NULL,
-+                                                  &http_status,
-+                                                  &http_status_phrase);
-+#else
-       /* for compatibility with older versions of libsoup, we may need to retry
-        * the soup_headers_parse_response call with slightly different arguments.
-        * since this function modifies the string passed in, we need to copy it
-@@ -567,28 +580,42 @@
-                                                           &http_status,
-                                                           &http_status_phrase);
-       }
-+#endif
-       if (parse_result) {
-               if (http_status == 200 || http_status == 206) {
-+                      const char *enc_str = NULL;
-+                      const char *len_str = NULL;
-+#if defined(HAVE_LIBSOUP_2_4)
-+                      enc_str = soup_message_headers_get (header_table, "Transfer-Encoding");
-+                      len_str = soup_message_headers_get (header_table, "Content-Length");
-+#else
-                       GSList *val;
--
-                       val = g_hash_table_lookup (header_table, "Transfer-Encoding");
-                       if (val) {
--                              if (g_strcasecmp ((gchar *)val->data, "chunked") == 0) {
-+                              enc_str = ((const char *)val->data);
-+                      }
-+                      val = g_hash_table_lookup (header_table, "Content-Length");
-+                      if (val) {
-+                              len_str = ((const char *)val->data);
-+                      }
-+#endif
-+
-+                      if (enc_str) {
-+                              if (g_strcasecmp (enc_str, "chunked") == 0) {
-                                       src->chunked = TRUE;
-                               } else {
-                                       GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ, (NULL),
--                                                         ("Unknown HTTP transfer encoding \"%s\"", val->data));
-+                                                         ("Unknown HTTP transfer encoding \"%s\"", enc_str));
-                               }
-                       } else {
-                               src->chunked = FALSE;
--                              val = g_hash_table_lookup (header_table, "Content-Length");
--                              if (val) {
-+                              if (len_str) {
-                                       char *e;
--                                      src->size = strtoul ((char *)val->data, &e, 10);
--                                      if (e == val->data) {
-+                                      src->size = strtoul (len_str, &e, 10);
-+                                      if (e == len_str) {
-                                               GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ, (NULL),
--                                                                 ("Couldn't read HTTP content length \"%s\"", val->data));
-+                                                                 ("Couldn't read HTTP content length \"%s\"", len_str));
-                                               ok = FALSE;
-                                       }
-                               } else {
-@@ -609,8 +636,13 @@
-               ok = FALSE;
-       }
-       g_free (http_status_phrase);
-+
-+#if defined(HAVE_LIBSOUP_2_4)
-+      soup_message_headers_free (header_table);
-+#else
-       soup_message_clear_headers (header_table);
-       g_hash_table_destroy (header_table);
-+#endif
-       end_headers += 4;
This page took 0.17581 seconds and 4 git commands to generate.