2006-09-16 Havoc Pennington <hp@redhat.com>
authorHavoc Pennington <hp@redhat.com>
Sat, 16 Sep 2006 15:49:27 +0000 (15:49 +0000)
committerHavoc Pennington <hp@redhat.com>
Sat, 16 Sep 2006 15:49:27 +0000 (15:49 +0000)
* dbus/dbus-sysdeps-unix.c (_dbus_open_tcp_socket)
(_dbus_open_unix_socket, _dbus_open_socket): change API for
_dbus_open_socket so the domain/type/protocol from system headers
are not required. This is kind of pointless though unless we move
part of _dbus_connect_tcp_socket into sysdeps.c instead of
sysdeps-unix.c, which would mean adding a wrapper around
bind/listen/etc.
Also, add DBusError to the socket-opening functions so they
don't require use of errno.

ChangeLog
dbus/dbus-sysdeps-unix.c
dbus/dbus-sysdeps.h

index a194a65..96eed11 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
 2006-09-16  Havoc Pennington  <hp@redhat.com>
 
+       * dbus/dbus-sysdeps-unix.c (_dbus_open_tcp_socket) 
+       (_dbus_open_unix_socket, _dbus_open_socket): change API for 
+       _dbus_open_socket so the domain/type/protocol from system headers
+       are not required. This is kind of pointless though unless we move
+       part of _dbus_connect_tcp_socket into sysdeps.c instead of
+       sysdeps-unix.c, which would mean adding a wrapper around
+       bind/listen/etc.
+       Also, add DBusError to the socket-opening functions so they 
+       don't require use of errno.
+
+2006-09-16  Havoc Pennington  <hp@redhat.com>
+
        * dbus/dbus-sysdeps-unix.h: small change to Peter's patch to make
        dbus-sysdeps-unix-util.c build, add unix-specific sysdeps header.
 
index 1ce928a..38adebb 100644 (file)
  * @{
  */
 
-dbus_bool_t
+static dbus_bool_t
 _dbus_open_socket (int              *fd,
                    int               domain,
                    int               type,
-                   int               protocol)
+                   int               protocol,
+                   DBusError        *error)
 {
   *fd = socket (domain, type, protocol);
-  return fd >= 0;
+  if (fd >= 0)
+    {
+      return TRUE;
+    }
+  else
+    {
+      dbus_set_error(error,
+                     _dbus_error_from_errno (errno),
+                     "Failed to open socket: %s",
+                     _dbus_strerror (errno));
+      return FALSE;
+    }
+}
+
+dbus_bool_t
+_dbus_open_tcp_socket (int              *fd,
+                       DBusError        *error)
+{
+  return _dbus_open_socket(fd, AF_INET, SOCK_STREAM, 0, error);
+}
+
+dbus_bool_t
+_dbus_open_unix_socket (int              *fd,
+                        DBusError        *error)
+{
+  return _dbus_open_socket(fd, PF_UNIX, SOCK_STREAM, 0, error);
 }
 
 dbus_bool_t 
@@ -356,15 +382,12 @@ _dbus_connect_unix_socket (const char     *path,
                  path, abstract);
   
   
-  if (!_dbus_open_socket (&fd, PF_UNIX, SOCK_STREAM, 0))
+  if (!_dbus_open_unix_socket (&fd, error))
     {
-      dbus_set_error (error,
-                      _dbus_error_from_errno (errno),
-                      "Failed to create socket: %s",
-                      _dbus_strerror (errno)); 
-      
+      _DBUS_ASSERT_ERROR_IS_SET(error);
       return -1;
     }
+  _DBUS_ASSERT_ERROR_IS_CLEAR(error);
 
   _DBUS_ZERO (addr);
   addr.sun_family = AF_UNIX;
@@ -490,13 +513,12 @@ _dbus_listen_unix_socket (const char     *path,
   _dbus_verbose ("listening on unix socket %s abstract=%d\n",
                  path, abstract);
   
-  if (!_dbus_open_socket (&listen_fd, PF_UNIX, SOCK_STREAM, 0))
+  if (!_dbus_open_unix_socket (&listen_fd, error))
     {
-      dbus_set_error (error, _dbus_error_from_errno (errno),
-                      "Failed to create socket \"%s\": %s",
-                      path, _dbus_strerror (errno));
+      _DBUS_ASSERT_ERROR_IS_SET(error);
       return -1;
     }
+  _DBUS_ASSERT_ERROR_IS_CLEAR(error);
 
   _DBUS_ZERO (addr);
   addr.sun_family = AF_UNIX;
@@ -626,16 +648,14 @@ _dbus_connect_tcp_socket (const char     *host,
   _DBUS_ASSERT_ERROR_IS_CLEAR (error);
  
   
-  if (!_dbus_open_socket (&fd, AF_INET, SOCK_STREAM, 0))
+  if (!_dbus_open_tcp_socket (&fd, error))
     {
-      dbus_set_error (error,
-                      _dbus_error_from_errno (errno),
-                      "Failed to create socket: %s",
-                      _dbus_strerror (errno)); 
+      _DBUS_ASSERT_ERROR_IS_SET(error);
       
       return -1;
     }
-
+  _DBUS_ASSERT_ERROR_IS_CLEAR(error);
+      
   if (host == NULL)
     host = "localhost";
 
@@ -704,13 +724,12 @@ _dbus_listen_tcp_socket (const char     *host,
   _DBUS_ASSERT_ERROR_IS_CLEAR (error);
   
   
-  if (!_dbus_open_socket (&listen_fd, AF_INET, SOCK_STREAM, 0))
+  if (!_dbus_open_tcp_socket (&listen_fd, error))
     {
-      dbus_set_error (error, _dbus_error_from_errno (errno),
-                      "Failed to create socket \"%s:%d\": %s",
-                      host, port, _dbus_strerror (errno));
+      _DBUS_ASSERT_ERROR_IS_SET(error);
       return -1;
     }
+  _DBUS_ASSERT_ERROR_IS_CLEAR(error);
 
   he = gethostbyname (host);
   if (he == NULL) 
index 729f14d..6e30197 100644 (file)
@@ -98,10 +98,10 @@ typedef unsigned long dbus_gid_t;
  * 
  */
 
-dbus_bool_t _dbus_open_socket      (int              *fd,
-                                    int               domain, 
-                                    int               type, 
-                                    int               protocol);
+dbus_bool_t _dbus_open_tcp_socket  (int              *fd,
+                                    DBusError        *error);
+dbus_bool_t _dbus_open_unix_socket (int              *fd,
+                                    DBusError        *error);
 dbus_bool_t _dbus_close_socket     (int               fd,
                                     DBusError        *error);
 int         _dbus_read_socket      (int               fd,