SOURCES: rhythmbox-as-needed.patch (NEW), rhythmbox-soup24.patch (...

patrys patrys at pld-linux.org
Thu Feb 7 13:56:35 CET 2008


Author: patrys                       Date: Thu Feb  7 12:56:35 2008 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- add support for libsoup-2.4

---- Files affected:
SOURCES:
   rhythmbox-as-needed.patch (NONE -> 1.1)  (NEW), rhythmbox-soup24.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/rhythmbox-as-needed.patch
diff -u /dev/null SOURCES/rhythmbox-as-needed.patch:1.1
--- /dev/null	Thu Feb  7 13:56:35 2008
+++ SOURCES/rhythmbox-as-needed.patch	Thu Feb  7 13:56:30 2008
@@ -0,0 +1,13 @@
+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)

================================================================
Index: SOURCES/rhythmbox-soup24.patch
diff -u /dev/null SOURCES/rhythmbox-soup24.patch:1.1
--- /dev/null	Thu Feb  7 13:56:35 2008
+++ SOURCES/rhythmbox-soup24.patch	Thu Feb  7 13:56:30 2008
@@ -0,0 +1,1743 @@
+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 at 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);
<<Diff was trimmed, longer than 597 lines>>


More information about the pld-cvs-commit mailing list