bus: Assign a serial number for messages from the driver
[platform/upstream/dbus.git] / dbus / dbus-server-win.c
index 860978d..bb6da48 100644 (file)
@@ -57,33 +57,7 @@ _dbus_server_listen_platform_specific (DBusAddressEntry *entry,
 
   method = dbus_address_entry_get_method (entry);
 
-  if (strcmp (method, "nonce-tcp") == 0)
-    {
-      const char *host;
-      const char *port;
-      const char *bind;
-      const char *family;
-
-      host = dbus_address_entry_get_value (entry, "host");
-      bind = dbus_address_entry_get_value (entry, "bind");
-      port = dbus_address_entry_get_value (entry, "port");
-      family = dbus_address_entry_get_value (entry, "family");
-
-      *server_p = _dbus_server_new_for_tcp_socket (host, bind, port,
-                                                   family, error, TRUE);
-
-      if (*server_p)
-        {
-          _DBUS_ASSERT_ERROR_IS_CLEAR(error);
-          return DBUS_SERVER_LISTEN_OK;
-        }
-      else
-        {
-          _DBUS_ASSERT_ERROR_IS_SET(error);
-          return DBUS_SERVER_LISTEN_DID_NOT_CONNECT;
-        }
-    }
-  else if (strcmp (method, "autolaunch") == 0)
+  if (strcmp (method, "autolaunch") == 0)
     {
       const char *host = "localhost";
       const char *bind = "localhost";
@@ -91,18 +65,22 @@ _dbus_server_listen_platform_specific (DBusAddressEntry *entry,
       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);
-          /// @todo should we return an error when address could not be published ?
           (*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;
         }