[maemo-commits] [maemo-commits] r18239 - projects/haf/trunk/dbus/debian/patches

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Tue May 5 16:10:06 EEST 2009
Author: makarhun
Date: 2009-05-05 16:10:01 +0300 (Tue, 05 May 2009)
New Revision: 18239

Added:
   projects/haf/trunk/dbus/debian/patches/50-ignore-epipe-on-write.patch
Modified:
   projects/haf/trunk/dbus/debian/patches/series
Log:
patch 50

Added: projects/haf/trunk/dbus/debian/patches/50-ignore-epipe-on-write.patch
===================================================================
--- projects/haf/trunk/dbus/debian/patches/50-ignore-epipe-on-write.patch	2009-05-05 12:25:08 UTC (rev 18238)
+++ projects/haf/trunk/dbus/debian/patches/50-ignore-epipe-on-write.patch	2009-05-05 13:10:01 UTC (rev 18239)
@@ -0,0 +1,124 @@
+diff --git a/debian/patches/36-bug-896-ignore-epipe-on-writes.patch b/debian/patches/36-bug-896-ignore-epipe-on-writes.patch
+new file mode 100644
+index 0000000..2ef8c2e
+--- /dev/null
++++ b/debian/patches/36-bug-896-ignore-epipe-on-writes.patch
+@@ -0,0 +1,118 @@
++diff --git a/dbus/dbus-sysdeps.c b/dbus/dbus-sysdeps.c
++index 00a1a3d..d317f31 100644
++--- a/dbus/dbus-sysdeps.c
+++++ b/dbus/dbus-sysdeps.c
++@@ -1078,6 +1078,16 @@ _dbus_get_is_errno_eintr (void)
++ }
++ 
++ /**
+++ * See if errno is EPIPE
+++ * @returns #TRUE if errno == EPIPE
+++ */
+++dbus_bool_t
+++_dbus_get_is_errno_epipe (void)
+++{
+++  return errno == EPIPE;
+++}
+++
+++/**
++  * Get error message from errno
++  * @returns _dbus_strerror(errno)
++  */
++diff --git a/dbus/dbus-sysdeps.h b/dbus/dbus-sysdeps.h
++index b766f3f..8e6cdc4 100644
++--- a/dbus/dbus-sysdeps.h
+++++ b/dbus/dbus-sysdeps.h
++@@ -362,6 +362,7 @@ dbus_bool_t _dbus_get_is_errno_nonzero               (void);
++ dbus_bool_t _dbus_get_is_errno_eagain_or_ewouldblock (void);
++ dbus_bool_t _dbus_get_is_errno_enomem                (void);
++ dbus_bool_t _dbus_get_is_errno_eintr                 (void);
+++dbus_bool_t _dbus_get_is_errno_epipe                 (void);
++ const char* _dbus_strerror_from_errno                (void);
++ 
++ void _dbus_disable_sigpipe (void);
++diff --git a/dbus/dbus-transport-socket.c b/dbus/dbus-transport-socket.c
++index 10b671c..bf97ef8 100644
++--- a/dbus/dbus-transport-socket.c
+++++ b/dbus/dbus-transport-socket.c
++@@ -616,7 +616,11 @@ do_writing (DBusTransport *transport)
++         {
++           /* EINTR already handled for us */
++           
++-          if (_dbus_get_is_errno_eagain_or_ewouldblock ())
+++          /* For some discussion of why we also ignore EPIPE here, see
+++           * http://lists.freedesktop.org/archives/dbus/2008-March/009526.html
+++           */
+++          
+++          if (_dbus_get_is_errno_eagain_or_ewouldblock () || _dbus_get_is_errno_epipe ())
++             goto out;
++           else
++             {
++@@ -807,6 +811,28 @@ do_reading (DBusTransport *transport)
++ }
++ 
++ static dbus_bool_t
+++unix_error_with_read_to_come (DBusTransport *itransport,
+++                              DBusWatch     *watch,
+++                              unsigned int   flags)
+++{
+++  DBusTransportSocket *transport = (DBusTransportSocket *) itransport;
+++  if (flags & DBUS_WATCH_ERROR)
+++    return TRUE;
+++
+++  if ((flags & DBUS_WATCH_HANGUP) && !(flags & DBUS_WATCH_READABLE))
+++    {
+++      /* If we have a read watch enabled ...
+++         we -might have data incoming ... => handle the HANGUP there */
+++      if (watch != transport->read_watch &&
+++          _dbus_watch_get_enabled (transport->read_watch))
+++        return FALSE;
+++      
+++      return TRUE; 
+++    }
+++  return FALSE;
+++}
+++
+++static dbus_bool_t
++ socket_handle_watch (DBusTransport *transport,
++                    DBusWatch     *watch,
++                    unsigned int   flags)
++@@ -823,8 +849,7 @@ socket_handle_watch (DBusTransport *transport,
++    * of its max_bytes_read_per_iteration limit).  The condition where
++    * flags == HANGUP (without READABLE) probably never happen in fact.
++    */
++-  if ((flags & DBUS_WATCH_ERROR) ||
++-      ((flags & DBUS_WATCH_HANGUP) && !(flags & DBUS_WATCH_READABLE)))
+++  if (unix_error_with_read_to_come (transport, watch, flags))
++     {
++       _dbus_verbose ("Hang up or error on watch\n");
++       _dbus_transport_disconnect (transport);
++diff --git a/dbus/dbus-watch.c b/dbus/dbus-watch.c
++index 9d6ab7c..da7b1bf 100644
++--- a/dbus/dbus-watch.c
+++++ b/dbus/dbus-watch.c
++@@ -51,6 +51,12 @@ struct DBusWatch
++   unsigned int enabled : 1;            /**< Whether it's enabled. */
++ };
++ 
+++dbus_bool_t
+++_dbus_watch_get_enabled (DBusWatch *watch)
+++{
+++  return watch->enabled;
+++}
+++
++ /**
++  * Creates a new DBusWatch. Used to add a file descriptor to be polled
++  * by a main loop.
++diff --git a/dbus/dbus-watch.h b/dbus/dbus-watch.h
++index 1d8d327..bb3fe98 100644
++--- a/dbus/dbus-watch.h
+++++ b/dbus/dbus-watch.h
++@@ -74,6 +74,7 @@ void           _dbus_watch_list_remove_watch  (DBusWatchList           *watch_li
++ void           _dbus_watch_list_toggle_watch  (DBusWatchList           *watch_list,
++                                                DBusWatch               *watch,
++                                                dbus_bool_t              enabled);
+++dbus_bool_t    _dbus_watch_get_enabled        (DBusWatch              *watch);
++ 
++ /** @} */
++ 

Modified: projects/haf/trunk/dbus/debian/patches/series
===================================================================
--- projects/haf/trunk/dbus/debian/patches/series	2009-05-05 12:25:08 UTC (rev 18238)
+++ projects/haf/trunk/dbus/debian/patches/series	2009-05-05 13:10:01 UTC (rev 18239)
@@ -18,3 +18,4 @@
 35-fixed-socket-dir.patch
 40-prevent-autolaunch.patch
 45-dbus-clock-monotonic-1.patch
+50-ignore-epipe-on-write.patch


More information about the maemo-commits mailing list