diff options
author | Daniele E. Domenichelli <daniele.domenichelli@gmail.com> | 2011-04-18 16:21:05 (GMT) |
---|---|---|
committer | Marius Storm-Olsen <marius.storm-olsen@nokia.com> | 2011-04-18 16:24:34 (GMT) |
commit | 35a7a647faf66b281b9ca952252f90e530aa3afb (patch) | |
tree | ef03ebc116ba91e347280e0f99f517e72644b775 /src/dbus/qdbusintegrator.cpp | |
parent | 393462ae14f6c33d0dc462704c754cf4f6bd41c3 (diff) | |
download | Qt-35a7a647faf66b281b9ca952252f90e530aa3afb.zip Qt-35a7a647faf66b281b9ca952252f90e530aa3afb.tar.gz Qt-35a7a647faf66b281b9ca952252f90e530aa3afb.tar.bz2 |
QtDBus: Fix QDBusServer to handle correctly new dbus connections
Merge-request: 2343
Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@nokia.com>
Diffstat (limited to 'src/dbus/qdbusintegrator.cpp')
-rw-r--r-- | src/dbus/qdbusintegrator.cpp | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp index a1cb209..e09b155 100644 --- a/src/dbus/qdbusintegrator.cpp +++ b/src/dbus/qdbusintegrator.cpp @@ -384,18 +384,16 @@ static void qDBusNewConnection(DBusServer *server, DBusConnection *connection, v // keep the connection alive q_dbus_connection_ref(connection); - QDBusConnectionPrivate *d = new QDBusConnectionPrivate; + QDBusConnectionPrivate *d = static_cast<QDBusConnectionPrivate *>(data); // setPeer does the error handling for us QDBusErrorInternal error; d->setPeer(connection, error); QDBusConnection retval = QDBusConnectionPrivate::q(d); - d->setBusService(retval); // make QDBusServer emit the newConnection signal - QDBusConnectionPrivate *server_d = static_cast<QDBusConnectionPrivate *>(data); - server_d->serverConnection(retval); + d->serverConnection(retval); } } // extern "C" @@ -1033,11 +1031,10 @@ void QDBusConnectionPrivate::closeConnection() mode = InvalidMode; // prevent reentrancy baseService.clear(); - if (oldMode == ServerMode) { - if (server) { - q_dbus_server_disconnect(server); - } - } else if (oldMode == ClientMode || oldMode == PeerMode) { + if (server) + q_dbus_server_disconnect(server); + + if (oldMode == ClientMode || oldMode == PeerMode) { if (connection) { q_dbus_connection_close(connection); // send the "close" message |