summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authordrochner <drochner@pkgsrc.org>2012-01-29 10:41:19 +0000
committerdrochner <drochner@pkgsrc.org>2012-01-29 10:41:19 +0000
commitbe25d2dfb9fa4e2b9517cdea6f4943dcd2438d38 (patch)
tree4ac7c88416975730f5cdc243fca204c4d991d233 /net
parent176ccbf8afcab6d49e4cea436e7446c5bbe6f965 (diff)
downloadpkgsrc-be25d2dfb9fa4e2b9517cdea6f4943dcd2438d38.tar.gz
add patch from upstream to avoid excessive use of glib2 "cancellables",
this is a problem with the glib2-2.30 implementation of the latter which runs out of file descriptors easily bump PKGREV
Diffstat (limited to 'net')
-rw-r--r--net/libsoup24/Makefile3
-rw-r--r--net/libsoup24/distinfo3
-rw-r--r--net/libsoup24/patches/patch-aa78
3 files changed, 82 insertions, 2 deletions
diff --git a/net/libsoup24/Makefile b/net/libsoup24/Makefile
index 0ace43a3a80..0c5ca603dde 100644
--- a/net/libsoup24/Makefile
+++ b/net/libsoup24/Makefile
@@ -1,7 +1,8 @@
-# $NetBSD: Makefile,v 1.34 2011/09/12 18:04:51 drochner Exp $
+# $NetBSD: Makefile,v 1.35 2012/01/29 10:41:19 drochner Exp $
DISTNAME= libsoup-2.34.3
PKGNAME= ${DISTNAME:S/libsoup/libsoup24/}
+PKGREVISION= 1
CATEGORIES= net gnome
MASTER_SITES= ${MASTER_SITE_GNOME:=sources/libsoup/2.34/}
EXTRACT_SUFX= .tar.bz2
diff --git a/net/libsoup24/distinfo b/net/libsoup24/distinfo
index 8b4056031f9..b80e0740ff0 100644
--- a/net/libsoup24/distinfo
+++ b/net/libsoup24/distinfo
@@ -1,5 +1,6 @@
-$NetBSD: distinfo,v 1.24 2011/09/12 18:04:51 drochner Exp $
+$NetBSD: distinfo,v 1.25 2012/01/29 10:41:19 drochner Exp $
SHA1 (libsoup-2.34.3.tar.bz2) = ea2354aa01f52ce3c9e40175c4d5ec9f9d46c039
RMD160 (libsoup-2.34.3.tar.bz2) = 14df1e875c91e7be163ceadd801d043e82e80e03
Size (libsoup-2.34.3.tar.bz2) = 697132 bytes
+SHA1 (patch-aa) = 83207f05095bceb280357c0a9ebb4ab0a9e97770
diff --git a/net/libsoup24/patches/patch-aa b/net/libsoup24/patches/patch-aa
new file mode 100644
index 00000000000..f8c67544079
--- /dev/null
+++ b/net/libsoup24/patches/patch-aa
@@ -0,0 +1,78 @@
+$NetBSD: patch-aa,v 1.5 2012/01/29 10:41:19 drochner Exp $
+
+gnome bug #658743
+
+--- libsoup/soup-http-input-stream.c.orig 2011-03-27 15:59:43.000000000 +0000
++++ libsoup/soup-http-input-stream.c
+@@ -45,7 +45,7 @@ typedef struct {
+ goffset offset;
+
+ GCancellable *cancellable;
+- GSource *cancel_watch;
++ guint cancel_id;
+ SoupHTTPInputStreamCallback got_headers_cb;
+ SoupHTTPInputStreamCallback got_chunk_cb;
+ SoupHTTPInputStreamCallback finished_cb;
+@@ -310,19 +310,19 @@ soup_http_input_stream_finished (SoupMes
+ priv->finished_cb (stream);
+ }
+
+-static gboolean
+-soup_http_input_stream_cancelled (GIOChannel *chan, GIOCondition condition,
+- gpointer stream)
++static void
++soup_http_input_stream_cancelled (GCancellable *cancellable,
++ gpointer user_data)
+ {
++ SoupHTTPInputStream *stream = user_data;
+ SoupHTTPInputStreamPrivate *priv = SOUP_HTTP_INPUT_STREAM_GET_PRIVATE (stream);
+
+- priv->cancel_watch = NULL;
++ g_signal_handler_disconnect (cancellable, priv->cancel_id);
++ priv->cancel_id = 0;
+
+ soup_session_pause_message (priv->session, priv->msg);
+ if (priv->cancelled_cb)
+- priv->cancelled_cb (stream);
+-
+- return FALSE;
++ priv->cancelled_cb (G_INPUT_STREAM (stream));
+ }
+
+ static void
+@@ -332,17 +332,12 @@ soup_http_input_stream_prepare_for_io (G
+ gsize count)
+ {
+ SoupHTTPInputStreamPrivate *priv = SOUP_HTTP_INPUT_STREAM_GET_PRIVATE (stream);
+- int cancel_fd;
+
+ priv->cancellable = cancellable;
+- cancel_fd = g_cancellable_get_fd (cancellable);
+- if (cancel_fd != -1) {
+- GIOChannel *chan = g_io_channel_unix_new (cancel_fd);
+- priv->cancel_watch = soup_add_io_watch (priv->async_context, chan,
+- G_IO_IN | G_IO_ERR | G_IO_HUP,
+- soup_http_input_stream_cancelled,
+- stream);
+- g_io_channel_unref (chan);
++ if (cancellable) {
++ priv->cancel_id = g_signal_connect (cancellable, "cancelled",
++ G_CALLBACK (soup_http_input_stream_cancelled),
++ stream);
+ }
+
+ priv->caller_buffer = buffer;
+@@ -358,10 +353,9 @@ soup_http_input_stream_done_io (GInputSt
+ {
+ SoupHTTPInputStreamPrivate *priv = SOUP_HTTP_INPUT_STREAM_GET_PRIVATE (stream);
+
+- if (priv->cancel_watch) {
+- g_source_destroy (priv->cancel_watch);
+- priv->cancel_watch = NULL;
+- g_cancellable_release_fd (priv->cancellable);
++ if (priv->cancel_id) {
++ g_signal_handler_disconnect (priv->cancellable, priv->cancel_id);
++ priv->cancel_id = 0;
+ }
+ priv->cancellable = NULL;
+