Filter TLS support from server
authorThadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
Fri, 20 Oct 2006 15:55:45 +0000 (15:55 +0000)
committerThadeu Lima de Souza Cascardo <cascardo@minaslivre.org>
Fri, 20 Oct 2006 15:55:45 +0000 (15:55 +0000)
TLS support from server is not communicated to the client. Then,
clients requesting TLS will not try to stablish a chypered connection,
which the proxy wouldn't be able to filter.

jabber_server.c

index 9955f09..728aab4 100644 (file)
@@ -50,6 +50,17 @@ static void jabber_server_read (net_hook_t* hook, gchar* buffer, size_t len)
   iks_parse (hook->data, buffer, len, FALSE);
 }
 
+void jabber_server_tls_filter (iks* node)
+{
+  iks* tls;
+  if (g_str_equal (iks_name (node), "stream:features"))
+    {
+      tls = iks_find (node, "starttls");
+      if (tls)
+       iks_hide (tls);
+    }
+}
+
 int jabber_server_parser (gpointer data, int type, iks* node)
 {
   net_hook_t* hook;
@@ -64,6 +75,7 @@ int jabber_server_parser (gpointer data, int type, iks* node)
       iks_delete (node);
       break;
     case IKS_NODE_NORMAL:
+      jabber_server_tls_filter (node);
       buffer = g_string_new (iks_string (iks_stack (node), node));
       gnet_conn_write (hook->peer->conn, buffer->str, buffer->len);
       g_string_free (buffer, TRUE);