Connections to localhost:80 proxied by GNet
authorThadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
Tue, 12 Sep 2006 18:57:17 +0000 (18:57 +0000)
committerThadeu Lima de Souza Cascardo <cascardo@minaslivre.org>
Tue, 12 Sep 2006 18:57:17 +0000 (18:57 +0000)
Connections are proxied to localhost:80 using GNet, in an equivalent
way to proxy.c which is marked to be removed.

config.c

index b7a4611..b44e797 100644 (file)
--- a/config.c
+++ b/config.c
@@ -2,8 +2,44 @@
 #include <gnet.h>
 #include <stdio.h>
 
+void client_event (GConn* conn, GConnEvent* event, gpointer data)
+{
+  GConn* server;
+  server = (GConn*) data;
+  switch (event->type)
+    {
+    case GNET_CONN_CONNECT:
+      fprintf (stderr, "Connected to localhost:80.\n");
+      gnet_conn_read (conn);
+      break;
+    case GNET_CONN_READ:
+      if (server == NULL)
+       {
+         fprintf (stderr, "Establishing connection to localhost:80.\n");
+         server = gnet_conn_new ("127.0.0.1", 80, client_event, (gpointer) conn);
+         gnet_conn_connect (server);
+         gnet_conn_set_callback (conn, client_event, (gpointer) server);
+       }
+      gnet_conn_write (server, event->buffer, event->length);
+      gnet_conn_read (conn);
+      break;
+    case GNET_CONN_WRITE:
+      break;
+    default:
+      fprintf (stderr, "Received an unexpected client event.\n");
+      break;
+    }
+}
+
 void new_client (GServer* server, GConn* conn, gpointer data)
 {
+  if (conn == NULL)
+    {
+      fprintf (stderr, "Server has received an error event.\n");
+      return;
+    }
+  gnet_conn_set_callback (conn, client_event, NULL);
+  gnet_conn_read (conn);
 }
 
 int main ()