[Telepathy-commits] [telepathy-salut/master] gibber_xmpp_connection_listener_listen() returns a boolean and add get_port() method

Alban Crequy alban.crequy at collabora.co.uk
Fri Nov 7 08:53:26 PST 2008


---
 lib/gibber/gibber-xmpp-connection-listener.c |   23 +++++++++++++++++------
 lib/gibber/gibber-xmpp-connection-listener.h |    7 +++++--
 src/salut-xmpp-connection-manager.c          |   11 +++++++++--
 3 files changed, 31 insertions(+), 10 deletions(-)

diff --git a/lib/gibber/gibber-xmpp-connection-listener.c b/lib/gibber/gibber-xmpp-connection-listener.c
index 4880526..ee1de03 100644
--- a/lib/gibber/gibber-xmpp-connection-listener.c
+++ b/lib/gibber/gibber-xmpp-connection-listener.c
@@ -58,6 +58,8 @@ struct _GibberXmppConnectionListenerPrivate
 {
   GibberListener *listener;
 
+  int port;
+
   gboolean dispose_has_run;
 };
 
@@ -160,10 +162,8 @@ new_connection_cb (GibberListener *listener,
 
 /**
  * port: the port, or 0 to choose a random port
- *
- * return: the port on success, or -1 on error
  */
-int
+gboolean
 gibber_xmpp_connection_listener_listen (GibberXmppConnectionListener *self,
                                         int port,
                                         GError **error)
@@ -174,14 +174,25 @@ gibber_xmpp_connection_listener_listen (GibberXmppConnectionListener *self,
 
   if (priv->listener == NULL)
     {
-      priv->listener = gibber_listener_new();
+      priv->listener = gibber_listener_new ();
       g_signal_connect (priv->listener, "new-connection",
         G_CALLBACK (new_connection_cb), self);
     }
 
   ret = gibber_listener_listen_tcp (priv->listener, port, error);
+
   if (ret == TRUE)
-    return gibber_listener_get_port (priv->listener);
+    priv->port = gibber_listener_get_port (priv->listener);
+
+  return ret;
+}
+
+int
+gibber_xmpp_connection_listener_get_port (
+    GibberXmppConnectionListener *self)
+{
+  GibberXmppConnectionListenerPrivate *priv =
+    GIBBER_XMPP_CONNECTION_LISTENER_GET_PRIVATE (self);
 
-  return -1;
+  return priv->port;
 }
diff --git a/lib/gibber/gibber-xmpp-connection-listener.h b/lib/gibber/gibber-xmpp-connection-listener.h
index 2f39070..3dfce35 100644
--- a/lib/gibber/gibber-xmpp-connection-listener.h
+++ b/lib/gibber/gibber-xmpp-connection-listener.h
@@ -60,10 +60,13 @@ GType gibber_xmpp_connection_listener_get_type (void);
 GibberXmppConnectionListener *
 gibber_xmpp_connection_listener_new (void);
 
-int
-gibber_xmpp_connection_listener_listen (
+gboolean gibber_xmpp_connection_listener_listen (
     GibberXmppConnectionListener *listener, int port, GError **error);
 
+int gibber_xmpp_connection_listener_get_port (
+    GibberXmppConnectionListener *listener);
+
+
 G_END_DECLS
 
 #endif /* #ifndef __GIBBER_XMPP_CONNECTION_LISTENER_H__ */
diff --git a/src/salut-xmpp-connection-manager.c b/src/salut-xmpp-connection-manager.c
index 7b9b068..9909a20 100644
--- a/src/salut-xmpp-connection-manager.c
+++ b/src/salut-xmpp-connection-manager.c
@@ -1162,7 +1162,7 @@ salut_xmpp_connection_manager_listen (SalutXmppConnectionManager *self,
       int ret;
       ret = gibber_xmpp_connection_listener_listen (priv->listener, port, &e);
 
-      if (ret == port)
+      if (ret == TRUE)
         break;
 
       if (!g_error_matches (e, GIBBER_LISTENER_ERROR,
@@ -1178,7 +1178,14 @@ salut_xmpp_connection_manager_listen (SalutXmppConnectionManager *self,
 
   if (port >= 5300)
     {
-      return gibber_xmpp_connection_listener_listen (priv->listener, 0, error);
+      int ret = gibber_xmpp_connection_listener_listen (priv->listener, 0, error);
+
+      if (ret == TRUE)
+        {
+          return gibber_xmpp_connection_listener_get_port (priv->listener);
+        }
+      else
+        return -1;
     }
 
   return port;
-- 
1.5.6.5




More information about the Telepathy-commits mailing list