diff options
author | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2015-05-14 12:17:10 +0100 |
---|---|---|
committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2015-05-14 14:30:30 +0100 |
commit | f180a839727981c8896056a35df17768d54eada6 (patch) | |
tree | 9a0647ea61d31d7b92afcceb2354d1fc8e5ad625 | |
parent | 084977cfe2cc232bc8b25fd7088a5a4f1a6a65d5 (diff) | |
download | dbus-f180a839727981c8896056a35df17768d54eada6.tar.gz |
_dbus_server_new_for_socket: raise a DBusError
This can currently only fail due to OOM, but I'm about to
make it possible to fail for other reasons.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=90414
Reviewed-by: Ralf Habacker <ralf.habacker@freenet.de>
[smcv: correct failure to set error in one case; document @error]
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
-rw-r--r-- | dbus/dbus-server-launchd.c | 4 | ||||
-rw-r--r-- | dbus/dbus-server-socket.c | 15 | ||||
-rw-r--r-- | dbus/dbus-server-socket.h | 3 | ||||
-rw-r--r-- | dbus/dbus-server-unix.c | 8 |
4 files changed, 17 insertions, 13 deletions
diff --git a/dbus/dbus-server-launchd.c b/dbus/dbus-server-launchd.c index d9d5908c..818ba8cf 100644 --- a/dbus/dbus-server-launchd.c +++ b/dbus/dbus-server-launchd.c @@ -185,11 +185,9 @@ _dbus_server_new_for_launchd (const char *launchd_env_var, DBusError * error) } - server = _dbus_server_new_for_socket (&launchd_fd, 1, &address, 0); + server = _dbus_server_new_for_socket (&launchd_fd, 1, &address, 0, error); if (server == NULL) { - dbus_set_error (error, DBUS_ERROR_NO_SERVER, - "Unable to listen on launchd fd %d.", launchd_fd); goto l_failed_0; } diff --git a/dbus/dbus-server-socket.c b/dbus/dbus-server-socket.c index 92788e73..cf28b7cc 100644 --- a/dbus/dbus-server-socket.c +++ b/dbus/dbus-server-socket.c @@ -277,14 +277,16 @@ static const DBusServerVTable socket_vtable = { * @param n_fds number of file descriptors * @param address the server's address * @param noncefile to be used for authentication (NULL if not needed) - * @returns the new server, or #NULL if no memory. + * @param error location to store reason for failure + * @returns the new server, or #NULL on OOM or other error. * */ DBusServer* _dbus_server_new_for_socket (DBusSocket *fds, int n_fds, const DBusString *address, - DBusNonceFile *noncefile) + DBusNonceFile *noncefile, + DBusError *error) { DBusServerSocket *socket_server; DBusServer *server; @@ -292,7 +294,7 @@ _dbus_server_new_for_socket (DBusSocket *fds, socket_server = dbus_new0 (DBusServerSocket, 1); if (socket_server == NULL) - return NULL; + goto failed_0; socket_server->noncefile = noncefile; @@ -366,6 +368,10 @@ _dbus_server_new_for_socket (DBusSocket *fds, failed_0: dbus_free (socket_server); + + if (error != NULL && !dbus_error_is_set (error)) + _DBUS_SET_OOM (error); + return NULL; } @@ -478,10 +484,9 @@ _dbus_server_new_for_tcp_socket (const char *host, } - server = _dbus_server_new_for_socket (listen_fds, nlisten_fds, &address, noncefile); + server = _dbus_server_new_for_socket (listen_fds, nlisten_fds, &address, noncefile, error); if (server == NULL) { - dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL); if (noncefile != NULL) goto failed_4; else diff --git a/dbus/dbus-server-socket.h b/dbus/dbus-server-socket.h index cdb62840..1a589f7d 100644 --- a/dbus/dbus-server-socket.h +++ b/dbus/dbus-server-socket.h @@ -32,7 +32,8 @@ DBUS_BEGIN_DECLS DBusServer* _dbus_server_new_for_socket (DBusSocket *fds, int n_fds, const DBusString *address, - DBusNonceFile *noncefile); + DBusNonceFile *noncefile, + DBusError *error); DBusServer* _dbus_server_new_for_autolaunch (const DBusString *address, DBusError *error); DBUS_PRIVATE_EXPORT diff --git a/dbus/dbus-server-unix.c b/dbus/dbus-server-unix.c index 0f67de37..5474177a 100644 --- a/dbus/dbus-server-unix.c +++ b/dbus/dbus-server-unix.c @@ -224,13 +224,14 @@ _dbus_server_listen_platform_specific (DBusAddressEntry *entry, goto systemd_err; } - *server_p = _dbus_server_new_for_socket (fds, n, &address, NULL); + *server_p = _dbus_server_new_for_socket (fds, n, &address, NULL, error); if (*server_p == NULL) - goto systemd_oom; + goto systemd_err; dbus_free (fds); return DBUS_SERVER_LISTEN_OK; + systemd_oom: _DBUS_SET_OOM (error); systemd_err: @@ -336,10 +337,9 @@ _dbus_server_new_for_domain_socket (const char *path, goto failed_1; } - server = _dbus_server_new_for_socket (&listen_fd, 1, &address, 0); + server = _dbus_server_new_for_socket (&listen_fd, 1, &address, 0, error); if (server == NULL) { - dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL); goto failed_2; } |