pty backend now supports the changed function interface, so pterm
[sgt/putty] / portfwd.c
index 4335398..e65dd31 100644 (file)
--- a/portfwd.c
+++ b/portfwd.c
@@ -138,7 +138,7 @@ char *pfd_newconnect(Socket *s, char *hostname, int port, void *c)
     pr->ready = 1;
     pr->c = c;
 
-    pr->s = *s = sk_new(addr, port, 0, 1, (Plug) pr);
+    pr->s = *s = new_connection(addr, dummy_realhost, port, 0, 1, 0, (Plug) pr);
     if ((err = sk_socket_error(*s))) {
        sfree(pr);
        return err;
@@ -153,9 +153,8 @@ char *pfd_newconnect(Socket *s, char *hostname, int port, void *c)
  called when someone connects to the local port
  */
 
-static int pfd_accepting(Plug p, struct sockaddr *addr, void *sock)
+static int pfd_accepting(Plug p, void *sock)
 {
-    /* for now always accept this socket */
     static struct plug_function_table fn_table = {
        pfd_closing,
        pfd_receive,
@@ -163,13 +162,9 @@ static int pfd_accepting(Plug p, struct sockaddr *addr, void *sock)
        NULL
     };
     struct PFwdPrivate *pr, *org;
-    struct sockaddr_in *sin = (struct sockaddr_in *)addr;
     Socket s;
     char *err;
 
-    if (ntohl(sin->sin_addr.s_addr) != 0x7F000001 && !cfg.lport_acceptall)
-       return 1; /* denied */
-
     org = (struct PFwdPrivate *)p;
     pr = (struct PFwdPrivate *) smalloc(sizeof(struct PFwdPrivate));
     pr->fn = &fn_table;
@@ -182,7 +177,7 @@ static int pfd_accepting(Plug p, struct sockaddr *addr, void *sock)
        return err != NULL;
     }
 
-    pr->c = new_sock_channel(s);
+    pr->c = new_sock_channel(backhandle, s);
 
     strcpy(pr->hostname, org->hostname);
     pr->port = org->port;
@@ -197,7 +192,8 @@ static int pfd_accepting(Plug p, struct sockaddr *addr, void *sock)
        return 1;
     } else {
        /* asks to forward to the specified host/port for this */
-       ssh_send_port_open(pr->c, pr->hostname, pr->port, "forwarding");
+       ssh_send_port_open(backhandle, pr->c, pr->hostname,
+                          pr->port, "forwarding");
     }
 
     return 0;
@@ -205,7 +201,7 @@ static int pfd_accepting(Plug p, struct sockaddr *addr, void *sock)
 
 
 /* Add a new forwarding from port -> desthost:destport
- sets up a listenner on the local machine on port
+ sets up a listener on the local machine on port
  */
 char *pfd_addforward(char *desthost, int destport, int port)
 {
@@ -232,7 +228,7 @@ char *pfd_addforward(char *desthost, int destport, int port)
     pr->ready = 0;
     pr->waiting = NULL;
 
-    pr->s = s = sk_newlistenner(port, (Plug) pr);
+    pr->s = s = new_listener(port, (Plug) pr, !cfg.lport_acceptall);
     if ((err = sk_socket_error(s))) {
        sfree(pr);
        return err;