}
- 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;
}
* @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;
socket_server = dbus_new0 (DBusServerSocket, 1);
if (socket_server == NULL)
- return NULL;
+ goto failed_0;
socket_server->noncefile = noncefile;
failed_0:
dbus_free (socket_server);
+
+ if (error != NULL && !dbus_error_is_set (error))
+ _DBUS_SET_OOM (error);
+
return NULL;
}
}
- 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
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
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:
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;
}