Do not connect to server when new stream is sent
authorThadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
Fri, 22 Sep 2006 21:34:38 +0000 (21:34 +0000)
committerThadeu Lima de Souza Cascardo <cascardo@minaslivre.org>
Fri, 22 Sep 2006 21:34:38 +0000 (21:34 +0000)
When a new stream is sent by the client due to SASL authentication or
TLS (although TLS is not dealt with right now), do not connect to the
server again. The new stream is sent to the server, anyway.

jabber.c

index 41d20a5..9efdc18 100644 (file)
--- a/jabber.c
+++ b/jabber.c
@@ -58,14 +58,18 @@ void jabber_connect_server (net_hook_t* hook, char* server, iks* node)
 {
   net_hook_t* server_hook;
   GString* buffer;
-  server_hook = jabber_server_hook_new (hook, server);
-  hook->peer = server_hook->conn;
-  g_message ("Trying to connect to server %s.", server);
-  gnet_conn_connect (hook->peer);
+  g_message ("Received new stream.");
+  if (hook->peer == NULL)
+    {
+      server_hook = jabber_server_hook_new (hook, server);
+      hook->peer = server_hook->conn;
+      g_message ("Trying to connect to server %s.", server);
+      gnet_conn_connect (hook->peer);
+      gnet_conn_read (hook->peer);
+    }
   buffer = jabber_new_start (node);
   gnet_conn_write (hook->peer, buffer->str, buffer->len);
   g_string_free (buffer, TRUE);
-  gnet_conn_read (hook->peer);
 }
 
 void jabber_send (net_hook_t* hook, iks* node)