]> asedeno.scripts.mit.edu Git - PuTTY.git/blobdiff - proxy.c
Replace the hacky 'OSSocket' type with a closure.
[PuTTY.git] / proxy.c
diff --git a/proxy.c b/proxy.c
index 8a146231036be4c51d7ba77319cb667160ab16af..01eaa34a2746bc1f8f4f87b24e516bda2bc51464 100644 (file)
--- a/proxy.c
+++ b/proxy.c
@@ -261,16 +261,18 @@ static void plug_proxy_sent (Plug p, int bufsize)
     plug_sent(ps->plug, bufsize);
 }
 
-static int plug_proxy_accepting (Plug p, OSSocket sock)
+static int plug_proxy_accepting(Plug p,
+                                accept_fn_t constructor, accept_ctx_t ctx)
 {
     Proxy_Plug pp = (Proxy_Plug) p;
     Proxy_Socket ps = pp->proxy_socket;
 
     if (ps->state != PROXY_STATE_ACTIVE) {
-       ps->accepting_sock = sock;
+       ps->accepting_constructor = constructor;
+       ps->accepting_ctx = ctx;
        return ps->negotiate(ps, PROXY_CHANGE_ACCEPTING);
     }
-    return plug_accepting(ps->plug, sock);
+    return plug_accepting(ps->plug, constructor, ctx);
 }
 
 /*
@@ -617,7 +619,8 @@ int proxy_http_negotiate (Proxy_Socket p, int change)
         * what should we do? close the socket with an appropriate
         * error message?
         */
-       return plug_accepting(p->plug, p->accepting_sock);
+       return plug_accepting(p->plug,
+                              p->accepting_constructor, p->accepting_ctx);
     }
 
     if (change == PROXY_CHANGE_RECEIVE) {
@@ -819,7 +822,8 @@ int proxy_socks4_negotiate (Proxy_Socket p, int change)
         * what should we do? close the socket with an appropriate
         * error message?
         */
-       return plug_accepting(p->plug, p->accepting_sock);
+       return plug_accepting(p->plug,
+                              p->accepting_constructor, p->accepting_ctx);
     }
 
     if (change == PROXY_CHANGE_RECEIVE) {
@@ -958,7 +962,8 @@ int proxy_socks5_negotiate (Proxy_Socket p, int change)
         * what should we do? close the socket with an appropriate
         * error message?
         */
-       return plug_accepting(p->plug, p->accepting_sock);
+       return plug_accepting(p->plug,
+                              p->accepting_constructor, p->accepting_ctx);
     }
 
     if (change == PROXY_CHANGE_RECEIVE) {
@@ -1496,7 +1501,8 @@ int proxy_telnet_negotiate (Proxy_Socket p, int change)
         * what should we do? close the socket with an appropriate
         * error message?
         */
-       return plug_accepting(p->plug, p->accepting_sock);
+       return plug_accepting(p->plug,
+                              p->accepting_constructor, p->accepting_ctx);
     }
 
     if (change == PROXY_CHANGE_RECEIVE) {