- g_message ("Received connection from %s.", conn->hostname);
- hook = ssl_hook_new (conn, address->server, address->port);
- pop_hook_new (hook);
- gnet_conn_read (conn);
+ g_message ("Received connection from %s.",
+ inet_ntoa (((struct sockaddr_in *) addr)->sin_addr));
+
+ server_conn = server_conn_new (address->server, address->port);
+ if (server_conn == NULL)
+ {
+ return;
+ }
+
+ conn = hc_conn_new (NULL, NULL);
+ r = hc_conn_set_driver_channel (conn, fd);
+ if (r != 0)
+ {
+ hc_conn_close (server_conn);
+ hc_conn_close (conn);
+ close (fd);
+ return;
+ }
+ pop_conn = hc_conn_new (NULL, NULL);
+ r = hc_conn_set_driver_pop (pop_conn, conn);
+ if (r != 0)
+ {
+ hc_conn_close (server_conn);
+ hc_conn_close (pop_conn);
+ hc_conn_close (conn);
+ return;
+ }
+ hc_conn_set_callback (pop_conn, push_other, server_conn);
+ hc_conn_set_callback (server_conn, push_other, pop_conn);
+