~mdw
/
sgt
/
putty
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Probable support for first_kex_packet_follows in KEXINIT. Not significantly
[sgt/putty]
/
x11fwd.c
diff --git
a/x11fwd.c
b/x11fwd.c
index
049381b
..
17ab3a2
100644
(file)
--- a/
x11fwd.c
+++ b/
x11fwd.c
@@
-1,3
+1,7
@@
+/*
+ * Platform-independent bits of X11 forwarding.
+ */
+
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
@@
-174,6
+178,12
@@
static char *x11_verify(unsigned long peer_ip, int peer_port,
return NULL;
}
return NULL;
}
+static void x11_log(Plug p, int type, SockAddr addr, int port,
+ const char *error_msg, int error_code)
+{
+ /* We have no interface to the logging module here, so we drop these. */
+}
+
static int x11_closing(Plug plug, const char *error_msg, int error_code,
int calling_back)
{
static int x11_closing(Plug plug, const char *error_msg, int error_code,
int calling_back)
{
@@
-228,14
+238,21
@@
int x11_get_screen_number(char *display)
/* Find the right display, returns an allocated string */
char *x11_display(const char *display) {
/* Find the right display, returns an allocated string */
char *x11_display(const char *display) {
- if(!display || !*display)
- if(!(display = getenv("DISPLAY")))
- display = ":0";
- if(display[0] == ':') {
+ char *ret;
+ if(!display || !*display) {
+ /* try to find platform-specific local display */
+ if((ret = platform_get_x_display())==0)
+ /* plausible default for all platforms */
+ ret = dupstr(":0");
+ } else
+ ret = dupstr(display);
+ if(ret[0] == ':') {
/* no transport specified, use whatever we think is best */
/* no transport specified, use whatever we think is best */
- return dupcat(platform_x11_best_transport, display, (char *)0);
+ char *s = dupcat(platform_x11_best_transport, ret, (char *)0);
+ sfree(ret);
+ return s;
} else
} else
- return
dupstr(display)
;
+ return
ret
;
}
/*
}
/*
@@
-248,6
+265,7
@@
const char *x11_init(Socket * s, char *display, void *c, void *auth,
const char *peeraddr, int peerport, const Config *cfg)
{
static const struct plug_function_table fn_table = {
const char *peeraddr, int peerport, const Config *cfg)
{
static const struct plug_function_table fn_table = {
+ x11_log,
x11_closing,
x11_receive,
x11_sent,
x11_closing,
x11_receive,
x11_sent,
@@
-290,7
+308,7
@@
const char *x11_init(Socket * s, char *display, void *c, void *auth,
/*
* Try to find host.
*/
/*
* Try to find host.
*/
- addr = name_lookup(host, port, &dummy_realhost, cfg);
+ addr = name_lookup(host, port, &dummy_realhost, cfg
, ADDRTYPE_UNSPEC
);
if ((err = sk_addr_error(addr)) != NULL) {
sk_addr_free(addr);
return err;
if ((err = sk_addr_error(addr)) != NULL) {
sk_addr_free(addr);
return err;
@@
-310,7
+328,7
@@
const char *x11_init(Socket * s, char *display, void *c, void *auth,
pr->c = c;
pr->s = *s = new_connection(addr, dummy_realhost, port,
pr->c = c;
pr->s = *s = new_connection(addr, dummy_realhost, port,
- 0, 1, 0, (Plug) pr, cfg);
+ 0, 1, 0,
0,
(Plug) pr, cfg);
if ((err = sk_socket_error(*s)) != NULL) {
sfree(pr);
return err;
if ((err = sk_socket_error(*s)) != NULL) {
sfree(pr);
return err;