diff options
author | Havoc Pennington <hp@redhat.com> | 2002-12-13 03:55:38 +0000 |
---|---|---|
committer | Havoc Pennington <hp@redhat.com> | 2002-12-13 03:55:38 +0000 |
commit | 271fa7fc335f332bb2be3beeef735334546c4957 (patch) | |
tree | 6c20f827eaa2575b6d94f0eaee5ce975c7061da8 /dbus/dbus-server-unix.c | |
parent | d4b870e7f91b7018524f7b85dc00b90cc64453bf (diff) |
2002-12-12 Havoc Pennington <hp@pobox.com>
* dbus/dbus-transport-unix.c, dbus/dbus-server-unix.c: use the
below new interfaces and include fewer system headers.
* dbus/dbus-sysdeps.c (_dbus_read): new function
(_dbus_write): new function
(_dbus_write_two): new function
(_dbus_connect_unix_socket): new function
(_dbus_listen_unix_socket): new function
* dbus/dbus-message-internal.h: change interfaces to use
DBusString
Diffstat (limited to 'dbus/dbus-server-unix.c')
-rw-r--r-- | dbus/dbus-server-unix.c | 53 |
1 files changed, 6 insertions, 47 deletions
diff --git a/dbus/dbus-server-unix.c b/dbus/dbus-server-unix.c index 277e00a6..c58923b9 100644 --- a/dbus/dbus-server-unix.c +++ b/dbus/dbus-server-unix.c @@ -27,10 +27,6 @@ #include "dbus-connection-internal.h" #include <sys/types.h> #include <unistd.h> -#include <sys/socket.h> -#include <sys/un.h> -#include <errno.h> -#include <fcntl.h> /** * @defgroup DBusServerUnix DBusServer implementations for UNIX @@ -132,14 +128,13 @@ unix_handle_watch (DBusServer *server, listen_fd = dbus_watch_get_fd (watch); - retry: - client_fd = accept (listen_fd, NULL, NULL); + client_fd = _dbus_accept_unix_socket (listen_fd); if (client_fd < 0) { - if (errno == EINTR) - goto retry; - else if (errno == EAGAIN || errno == EWOULDBLOCK) + /* EINTR handled for us */ + + if (errno == EAGAIN || errno == EWOULDBLOCK) _dbus_verbose ("No client available to accept after all\n"); else _dbus_verbose ("Failed to accept a client connection: %s\n", @@ -247,46 +242,10 @@ _dbus_server_new_for_domain_socket (const char *path, { DBusServer *server; int listen_fd; - struct sockaddr_un addr; - - listen_fd = socket (AF_LOCAL, SOCK_STREAM, 0); + listen_fd = _dbus_listen_unix_socket (path, result); if (listen_fd < 0) - { - dbus_set_result (result, _dbus_result_from_errno (errno)); - _dbus_verbose ("Failed to create socket \"%s\": %s\n", - path, _dbus_strerror (errno)); - return NULL; - } - - if (!_dbus_set_fd_nonblocking (listen_fd, result)) - { - close (listen_fd); - return NULL; - } - - _DBUS_ZERO (addr); - addr.sun_family = AF_LOCAL; - strncpy (addr.sun_path, path, _DBUS_MAX_SUN_PATH_LENGTH); - addr.sun_path[_DBUS_MAX_SUN_PATH_LENGTH] = '\0'; - - if (bind (listen_fd, (struct sockaddr*) &addr, SUN_LEN (&addr)) < 0) - { - dbus_set_result (result, _dbus_result_from_errno (errno)); - _dbus_verbose ("Failed to bind socket \"%s\": %s\n", - path, _dbus_strerror (errno)); - close (listen_fd); - return NULL; - } - - if (listen (listen_fd, 30 /* backlog */) < 0) - { - dbus_set_result (result, _dbus_result_from_errno (errno)); - _dbus_verbose ("Failed to listen on socket \"%s\": %s\n", - path, _dbus_strerror (errno)); - close (listen_fd); - return NULL; - } + return NULL; server = _dbus_server_new_for_fd (listen_fd); if (server == NULL) |