Propagate the screen number from a local X display to the remote
[u/mdw/putty] / ssh.c
diff --git a/ssh.c b/ssh.c
index 3275365..7e064ec 100644 (file)
--- a/ssh.c
+++ b/ssh.c
@@ -297,6 +297,7 @@ extern int x11_send(Socket, char *, int);
 extern void *x11_invent_auth(char *, int, char *, int);
 extern void x11_unthrottle(Socket s);
 extern void x11_override_throttle(Socket s, int enable);
+extern int x11_get_screen_number(char *display);
 
 extern char *pfd_newconnect(Socket * s, char *hostname, int port, void *c);
 extern char *pfd_addforward(char *desthost, int destport, char *srcaddr,
@@ -638,13 +639,7 @@ struct ssh_tag {
     int (*s_rdpkt) (Ssh ssh, unsigned char **data, int *datalen);
 };
 
-#define logevent(s) do { \
-    logevent(ssh->frontend, s); \
-    if ((flags & FLAG_STDERR) && (flags & FLAG_VERBOSE)) { \
-       fprintf(stderr, "%s\n", s); \
-       fflush(stderr); \
-    } \
-} while (0)
+#define logevent(s) logevent(ssh->frontend, s)
 
 /* logevent, only printf-formatted. */
 void logeventf(Ssh ssh, char *fmt, ...)
@@ -656,10 +651,6 @@ void logeventf(Ssh ssh, char *fmt, ...)
     buf = dupvprintf(fmt, ap);
     va_end(ap);
     logevent(buf);
-    if ((flags & FLAG_STDERR) && (flags & FLAG_VERBOSE)) {
-       fprintf(stderr, "%s\n", buf);
-       fflush(stderr);
-    }
     sfree(buf);
 }
 
@@ -2072,7 +2063,7 @@ static char *connect_to_host(Ssh ssh, char *host, int port,
      * Try to find host.
      */
     logeventf(ssh, "Looking up host \"%s\"", host);
-    addr = sk_namelookup(host, realhost);
+    addr = name_lookup(host, port, realhost);
     if ((err = sk_addr_error(addr)))
        return err;
 
@@ -3047,7 +3038,8 @@ static void ssh1_protocol(Ssh ssh, unsigned char *in, int inlen, int ispkt)
        if (ssh->v1_local_protoflags & SSH1_PROTOFLAG_SCREEN_NUMBER) {
            send_packet(ssh, SSH1_CMSG_X11_REQUEST_FORWARDING,
                        PKT_STR, proto, PKT_STR, data,
-                       PKT_INT, 0, PKT_END);
+                       PKT_INT, x11_get_screen_number(cfg.x11_display),
+                       PKT_END);
        } else {
            send_packet(ssh, SSH1_CMSG_X11_REQUEST_FORWARDING,
                        PKT_STR, proto, PKT_STR, data, PKT_END);
@@ -5093,7 +5085,7 @@ static void do_ssh2_authconn(Ssh ssh, unsigned char *in, int inlen, int ispkt)
        ssh2_pkt_addbool(ssh, 0);              /* many connections */
        ssh2_pkt_addstring(ssh, proto);
        ssh2_pkt_addstring(ssh, data);
-       ssh2_pkt_adduint32(ssh, 0);            /* screen number */
+       ssh2_pkt_adduint32(ssh, x11_get_screen_number(cfg.x11_display));
        ssh2_pkt_send(ssh);
 
        do {