diff options
author | Havoc Pennington <hp@redhat.com> | 2006-09-16 15:49:27 +0000 |
---|---|---|
committer | Havoc Pennington <hp@redhat.com> | 2006-09-16 15:49:27 +0000 |
commit | d0971c53df10195a07bdea2d274c9c42403bb1d0 (patch) | |
tree | f97b76d1d0607eebc142e5b41c1137a4f21ea484 | |
parent | 08079a5bdedd6ec91cda413983e4bd3b6ee0252d (diff) |
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.
-rw-r--r-- | ChangeLog | 12 | ||||
-rw-r--r-- | dbus/dbus-sysdeps-unix.c | 65 | ||||
-rw-r--r-- | dbus/dbus-sysdeps.h | 8 |
3 files changed, 58 insertions, 27 deletions
@@ -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. diff --git a/dbus/dbus-sysdeps-unix.c b/dbus/dbus-sysdeps-unix.c index 1ce928af..38adebb1 100644 --- a/dbus/dbus-sysdeps-unix.c +++ b/dbus/dbus-sysdeps-unix.c @@ -77,14 +77,40 @@ * @{ */ -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) diff --git a/dbus/dbus-sysdeps.h b/dbus/dbus-sysdeps.h index 729f14d2..6e301976 100644 --- a/dbus/dbus-sysdeps.h +++ b/dbus/dbus-sysdeps.h @@ -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, |