X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dbus%2Fdbus-server-win.c;h=bb6da48353dd46503b0fa44e13fdd59a238f9dd9;hb=1200c464b6c9051340960e07f0d61a51dad71286;hp=d6acc1e76f8294e063b5388ae6856f67a7f5b4bc;hpb=dc33f4f7749ed303374ebdf00e48ea8a471afd25;p=platform%2Fupstream%2Fdbus.git diff --git a/dbus/dbus-server-win.c b/dbus/dbus-server-win.c index d6acc1e..bb6da48 100644 --- a/dbus/dbus-server-win.c +++ b/dbus/dbus-server-win.c @@ -22,11 +22,10 @@ * */ +#include #include "dbus-internals.h" #include "dbus-server-win.h" #include "dbus-server-socket.h" -#include "dbus-connection-internal.h" -#include "dbus-sysdeps-win.h" /** * @defgroup DBusServerWin DBusServer implementations for Windows @@ -52,12 +51,45 @@ _dbus_server_listen_platform_specific (DBusAddressEntry *entry, DBusServer **server_p, DBusError *error) { - /* don't handle any method yet, return NULL with the error unset, - ** for a sample implementation see dbus-server-unix.c - */ + const char *method; + *server_p = NULL; - _DBUS_ASSERT_ERROR_IS_CLEAR(error); - return DBUS_SERVER_LISTEN_NOT_HANDLED; + + method = dbus_address_entry_get_method (entry); + + if (strcmp (method, "autolaunch") == 0) + { + const char *host = "localhost"; + const char *bind = "localhost"; + const char *port = "0"; + const char *family = "ipv4"; + const char *scope = dbus_address_entry_get_value (entry, "scope"); + + if (_dbus_daemon_is_session_bus_address_published (scope)) + return DBUS_SERVER_LISTEN_ADDRESS_ALREADY_USED; + + *server_p = _dbus_server_new_for_tcp_socket (host, bind, port, + family, error, FALSE); + if (*server_p) + { + _DBUS_ASSERT_ERROR_IS_CLEAR(error); + (*server_p)->published_address = + _dbus_daemon_publish_session_bus_address ((*server_p)->address, scope); + return DBUS_SERVER_LISTEN_OK; + } + else + { + // make sure no handle is open + _dbus_daemon_unpublish_session_bus_address (); + _DBUS_ASSERT_ERROR_IS_SET(error); + return DBUS_SERVER_LISTEN_DID_NOT_CONNECT; + } + } + else + { + _DBUS_ASSERT_ERROR_IS_CLEAR(error); + return DBUS_SERVER_LISTEN_NOT_HANDLED; + } } /** @} */