Make server port configurable
[cascardo/rnetproxy.git] / popproxy.c
index 23b17ba..6aaf804 100644 (file)
 
 #define CONFFILE SYSCONFDIR "/popproxy.conf"
 
+struct pop_address
+{
+  char *server;
+  int port;
+};
+
 void new_client (GServer* server, GConn* conn, gpointer data)
 {
   net_hook_t* hook;
+  struct pop_address *address = data;
   if (conn == NULL)
     {
       g_critical ("Server has received an error event.");
       return;
     }
   g_message ("Received connection from %s.", conn->hostname);
-  hook = ssl_hook_new (conn, data);
+  hook = ssl_hook_new (conn, address->server, address->port);
   pop_hook_new (hook);
   gnet_conn_read (conn);
 }
@@ -65,6 +72,8 @@ int main (int argc, char** argv)
   gchar* conf_address;
   gint port;
   gchar *server_address;
+  gint server_port;
+  struct pop_address pop_address;
 
   gnutls_global_init ();
   gnet_init ();
@@ -116,9 +125,20 @@ int main (int argc, char** argv)
       g_error_free (error);
     }
 
+  server_port = g_key_file_get_integer (keyfile, "global", "server_port",
+                                          &error);
+  if (server_port == 0 && error != NULL)
+    {
+      port = 995;
+      g_error_free (error);
+    }
+
+  pop_address.server = server_address;
+  pop_address.port = server_port;
+
   inetaddr = gnet_inetaddr_new_nonblock (conf_address, port);
   if (gnet_server_new (inetaddr, port,
-                       new_client, server_address) == NULL)
+                       new_client, &pop_address) == NULL)
     {
       fprintf (stderr, "Could not create server.\n");
       exit (1);