diff --git a/daemon/gdm-product-slave.c b/daemon/gdm-product-slave.c
index fac492c..d5de7ce 100644
--- a/daemon/gdm-product-slave.c
+++ b/daemon/gdm-product-slave.c
@@ -809,6 +809,13 @@ on_relay_start_conversation (GdmProductSlave *slave,
 }
 
 static void
+on_relay_open_session (GdmProductSlave *slave,
+                        DBusMessage     *message)
+{
+        gdm_session_open_session (GDM_SESSION (slave->priv->session));
+}
+
+static void
 on_relay_start_session (GdmProductSlave *slave,
                         DBusMessage     *message)
 {
@@ -1014,6 +1021,8 @@ relay_dbus_handle_message (DBusConnection *connection,
                 on_relay_layout_selected (slave, message);
         } else if (dbus_message_is_signal (message, RELAY_SERVER_DBUS_INTERFACE, "UserSelected")) {
                 on_relay_user_selected (slave, message);
+        } else if (dbus_message_is_signal (message, RELAY_SERVER_DBUS_INTERFACE, "OpenSession")) {
+                on_relay_open_session (slave, message);
         } else if (dbus_message_is_signal (message, RELAY_SERVER_DBUS_INTERFACE, "StartSession")) {
                 on_relay_start_session (slave, message);
         } else if (dbus_message_is_signal (message, RELAY_SERVER_DBUS_INTERFACE, "StartConversation")) {
@@ -1250,6 +1259,8 @@ gdm_product_slave_finalize (GObject *object)
 
         gdm_product_slave_stop (GDM_SLAVE (slave));
 
+        g_free (slave->priv->relay_address);
+
         G_OBJECT_CLASS (gdm_product_slave_parent_class)->finalize (object);
 }
 
