mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-01-10 01:48:00 +00:00
Loose end from r5031: the Kex panel should only be displayed in
mid-session if we are not using SSHv1. I've done this by introducing
a generic `cfg_info' function which every back end can use to
communicate an int's worth of data to setup_config_box; in SSH
that's the protocol version in use, and in everything else it's
currently zero.
[originally from svn r5040]
[r5031 == d77102a8d5
]
This commit is contained in:
parent
6120d91507
commit
b0bf176dfb
7
config.c
7
config.c
@ -770,7 +770,7 @@ static void portfwd_handler(union control *ctrl, void *dlg,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void setup_config_box(struct controlbox *b, struct sesslist *sesslist,
|
void setup_config_box(struct controlbox *b, struct sesslist *sesslist,
|
||||||
int midsession, int protocol)
|
int midsession, int protocol, int protcfginfo)
|
||||||
{
|
{
|
||||||
struct controlset *s;
|
struct controlset *s;
|
||||||
struct sessionsaver_data *ssd;
|
struct sessionsaver_data *ssd;
|
||||||
@ -1583,8 +1583,10 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist,
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* The Connection/SSH/Kex panel. (Owing to repeat key
|
* The Connection/SSH/Kex panel. (Owing to repeat key
|
||||||
* exchange, this is all meaningful in mid-session.)
|
* exchange, this is all meaningful in mid-session _if_
|
||||||
|
* we're using SSH2 or haven't decided yet.)
|
||||||
*/
|
*/
|
||||||
|
if (protcfginfo != 1) {
|
||||||
ctrl_settitle(b, "Connection/SSH/Kex",
|
ctrl_settitle(b, "Connection/SSH/Kex",
|
||||||
"Options controlling SSH key exchange");
|
"Options controlling SSH key exchange");
|
||||||
|
|
||||||
@ -1610,6 +1612,7 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist,
|
|||||||
I(16));
|
I(16));
|
||||||
ctrl_text(s, "(Use 1M for 1 megabyte, 1G for 1 gigabyte etc)",
|
ctrl_text(s, "(Use 1M for 1 megabyte, 1G for 1 gigabyte etc)",
|
||||||
HELPCTX(ssh_kex_repeat));
|
HELPCTX(ssh_kex_repeat));
|
||||||
|
}
|
||||||
|
|
||||||
if (!midsession) {
|
if (!midsession) {
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $Id: macdlg.c,v 1.18 2003/04/05 15:01:16 ben Exp $ */
|
/* $Id$ */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2002 Ben Harris
|
* Copyright (c) 2002 Ben Harris
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
@ -67,7 +67,7 @@ void mac_newsession(void)
|
|||||||
|
|
||||||
get_sesslist(&sesslist, TRUE);
|
get_sesslist(&sesslist, TRUE);
|
||||||
s->ctrlbox = ctrl_new_box();
|
s->ctrlbox = ctrl_new_box();
|
||||||
setup_config_box(s->ctrlbox, &sesslist, FALSE, 0);
|
setup_config_box(s->ctrlbox, &sesslist, FALSE, 0, 0);
|
||||||
|
|
||||||
s->settings_ctrls.data = &s->cfg;
|
s->settings_ctrls.data = &s->cfg;
|
||||||
s->settings_ctrls.end = &mac_enddlg;
|
s->settings_ctrls.end = &mac_enddlg;
|
||||||
|
3
putty.h
3
putty.h
@ -340,6 +340,7 @@ struct backend_tag {
|
|||||||
* buffer is clearing.
|
* buffer is clearing.
|
||||||
*/
|
*/
|
||||||
void (*unthrottle) (void *handle, int);
|
void (*unthrottle) (void *handle, int);
|
||||||
|
int (*cfg_info) (void *handle);
|
||||||
int default_port;
|
int default_port;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -920,7 +921,7 @@ void cmdline_error(char *, ...);
|
|||||||
*/
|
*/
|
||||||
struct controlbox;
|
struct controlbox;
|
||||||
void setup_config_box(struct controlbox *b, struct sesslist *sesslist,
|
void setup_config_box(struct controlbox *b, struct sesslist *sesslist,
|
||||||
int midsession, int protocol);
|
int midsession, int protocol, int protcfginfo);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Exports from minibidi.c.
|
* Exports from minibidi.c.
|
||||||
|
9
raw.c
9
raw.c
@ -236,6 +236,14 @@ static int raw_exitcode(void *handle)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* cfg_info for Raw does nothing at all.
|
||||||
|
*/
|
||||||
|
static int raw_cfg_info(void *handle)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
Backend raw_backend = {
|
Backend raw_backend = {
|
||||||
raw_init,
|
raw_init,
|
||||||
raw_free,
|
raw_free,
|
||||||
@ -252,5 +260,6 @@ Backend raw_backend = {
|
|||||||
raw_provide_ldisc,
|
raw_provide_ldisc,
|
||||||
raw_provide_logctx,
|
raw_provide_logctx,
|
||||||
raw_unthrottle,
|
raw_unthrottle,
|
||||||
|
raw_cfg_info,
|
||||||
1
|
1
|
||||||
};
|
};
|
||||||
|
9
rlogin.c
9
rlogin.c
@ -303,6 +303,14 @@ static int rlogin_exitcode(void *handle)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* cfg_info for rlogin does nothing at all.
|
||||||
|
*/
|
||||||
|
static int rlogin_cfg_info(void *handle)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
Backend rlogin_backend = {
|
Backend rlogin_backend = {
|
||||||
rlogin_init,
|
rlogin_init,
|
||||||
rlogin_free,
|
rlogin_free,
|
||||||
@ -319,5 +327,6 @@ Backend rlogin_backend = {
|
|||||||
rlogin_provide_ldisc,
|
rlogin_provide_ldisc,
|
||||||
rlogin_provide_logctx,
|
rlogin_provide_logctx,
|
||||||
rlogin_unthrottle,
|
rlogin_unthrottle,
|
||||||
|
rlogin_cfg_info,
|
||||||
1
|
1
|
||||||
};
|
};
|
||||||
|
11
ssh.c
11
ssh.c
@ -7860,6 +7860,16 @@ static int ssh_return_exitcode(void *handle)
|
|||||||
return (ssh->exitcode >= 0 ? ssh->exitcode : 0);
|
return (ssh->exitcode >= 0 ? ssh->exitcode : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* cfg_info for SSH is the currently running version of the
|
||||||
|
* protocol. (1 for 1; 2 for 2; 0 for not-decided-yet.)
|
||||||
|
*/
|
||||||
|
static int ssh_cfg_info(void *handle)
|
||||||
|
{
|
||||||
|
Ssh ssh = (Ssh) handle;
|
||||||
|
return ssh->version;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gross hack: pscp will try to start SFTP but fall back to scp1 if
|
* Gross hack: pscp will try to start SFTP but fall back to scp1 if
|
||||||
* that fails. This variable is the means by which scp.c can reach
|
* that fails. This variable is the means by which scp.c can reach
|
||||||
@ -7887,5 +7897,6 @@ Backend ssh_backend = {
|
|||||||
ssh_provide_ldisc,
|
ssh_provide_ldisc,
|
||||||
ssh_provide_logctx,
|
ssh_provide_logctx,
|
||||||
ssh_unthrottle,
|
ssh_unthrottle,
|
||||||
|
ssh_cfg_info,
|
||||||
22
|
22
|
||||||
};
|
};
|
||||||
|
9
telnet.c
9
telnet.c
@ -1050,6 +1050,14 @@ static int telnet_exitcode(void *handle)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* cfg_info for Telnet does nothing at all.
|
||||||
|
*/
|
||||||
|
static int telnet_cfg_info(void *handle)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
Backend telnet_backend = {
|
Backend telnet_backend = {
|
||||||
telnet_init,
|
telnet_init,
|
||||||
telnet_free,
|
telnet_free,
|
||||||
@ -1066,5 +1074,6 @@ Backend telnet_backend = {
|
|||||||
telnet_provide_ldisc,
|
telnet_provide_ldisc,
|
||||||
telnet_provide_logctx,
|
telnet_provide_logctx,
|
||||||
telnet_unthrottle,
|
telnet_unthrottle,
|
||||||
|
telnet_cfg_info,
|
||||||
23
|
23
|
||||||
};
|
};
|
||||||
|
14
testback.c
14
testback.c
@ -1,4 +1,4 @@
|
|||||||
/* $Id: testback.c,v 1.10 2004/06/20 17:07:32 jacob Exp $ */
|
/* $Id$ */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1999 Simon Tatham
|
* Copyright (c) 1999 Simon Tatham
|
||||||
* Copyright (c) 1999 Ben Harris
|
* Copyright (c) 1999 Ben Harris
|
||||||
@ -57,13 +57,15 @@ static void null_unthrottle(void *, int);
|
|||||||
Backend null_backend = {
|
Backend null_backend = {
|
||||||
null_init, null_free, null_reconfig, null_send, null_sendbuffer, null_size,
|
null_init, null_free, null_reconfig, null_send, null_sendbuffer, null_size,
|
||||||
null_special, null_get_specials, null_socket, null_exitcode, null_sendok,
|
null_special, null_get_specials, null_socket, null_exitcode, null_sendok,
|
||||||
null_ldisc, null_provide_ldisc, null_provide_logctx, null_unthrottle, 0
|
null_ldisc, null_provide_ldisc, null_provide_logctx, null_unthrottle,
|
||||||
|
null_cfg_info, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
Backend loop_backend = {
|
Backend loop_backend = {
|
||||||
loop_init, loop_free, null_reconfig, loop_send, null_sendbuffer, null_size,
|
loop_init, loop_free, null_reconfig, loop_send, null_sendbuffer, null_size,
|
||||||
null_special, null_get_specials, null_socket, null_exitcode, null_sendok,
|
null_special, null_get_specials, null_socket, null_exitcode, null_sendok,
|
||||||
null_ldisc, null_provide_ldisc, null_provide_logctx, null_unthrottle, 0
|
null_ldisc, null_provide_ldisc, null_provide_logctx, null_unthrottle,
|
||||||
|
null_cfg_info, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
struct loop_state {
|
struct loop_state {
|
||||||
@ -163,6 +165,12 @@ static void null_provide_logctx(void *handle, void *logctx) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int null_cfg_info(void *handle)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Emacs magic:
|
* Emacs magic:
|
||||||
* Local Variables:
|
* Local Variables:
|
||||||
|
@ -1945,7 +1945,8 @@ int get_listitemheight(void)
|
|||||||
return req.height;
|
return req.height;
|
||||||
}
|
}
|
||||||
|
|
||||||
int do_config_box(const char *title, Config *cfg, int midsession)
|
int do_config_box(const char *title, Config *cfg, int midsession,
|
||||||
|
int protcfginfo)
|
||||||
{
|
{
|
||||||
GtkWidget *window, *hbox, *vbox, *cols, *label,
|
GtkWidget *window, *hbox, *vbox, *cols, *label,
|
||||||
*tree, *treescroll, *panels, *panelvbox;
|
*tree, *treescroll, *panels, *panelvbox;
|
||||||
@ -1974,7 +1975,7 @@ int do_config_box(const char *title, Config *cfg, int midsession)
|
|||||||
window = gtk_dialog_new();
|
window = gtk_dialog_new();
|
||||||
|
|
||||||
ctrlbox = ctrl_new_box();
|
ctrlbox = ctrl_new_box();
|
||||||
setup_config_box(ctrlbox, &sl, midsession, cfg->protocol);
|
setup_config_box(ctrlbox, &sl, midsession, cfg->protocol, protcfginfo);
|
||||||
unix_setup_config_box(ctrlbox, midsession, window);
|
unix_setup_config_box(ctrlbox, midsession, window);
|
||||||
|
|
||||||
gtk_window_set_title(GTK_WINDOW(window), title);
|
gtk_window_set_title(GTK_WINDOW(window), title);
|
||||||
|
@ -2857,7 +2857,8 @@ void change_settings_menuitem(GtkMenuItem *item, gpointer data)
|
|||||||
|
|
||||||
cfg2 = inst->cfg; /* structure copy */
|
cfg2 = inst->cfg; /* structure copy */
|
||||||
|
|
||||||
if (do_config_box(title, &cfg2, 1)) {
|
if (do_config_box(title, &cfg2, 1,
|
||||||
|
inst->back?inst->back->cfg_info(inst->backhandle):0)) {
|
||||||
|
|
||||||
oldcfg = inst->cfg; /* structure copy */
|
oldcfg = inst->cfg; /* structure copy */
|
||||||
inst->cfg = cfg2; /* structure copy */
|
inst->cfg = cfg2; /* structure copy */
|
||||||
|
@ -804,6 +804,11 @@ static int pty_exitcode(void *handle)
|
|||||||
return pty_exit_code;
|
return pty_exit_code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int pty_cfg_info(void *handle)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
Backend pty_backend = {
|
Backend pty_backend = {
|
||||||
pty_init,
|
pty_init,
|
||||||
pty_free,
|
pty_free,
|
||||||
@ -820,5 +825,6 @@ Backend pty_backend = {
|
|||||||
pty_provide_ldisc,
|
pty_provide_ldisc,
|
||||||
pty_provide_logctx,
|
pty_provide_logctx,
|
||||||
pty_unthrottle,
|
pty_unthrottle,
|
||||||
|
pty_cfg_info,
|
||||||
1
|
1
|
||||||
};
|
};
|
||||||
|
@ -60,7 +60,8 @@ long get_windowid(void *frontend);
|
|||||||
void *get_window(void *frontend); /* void * to avoid depending on gtk.h */
|
void *get_window(void *frontend); /* void * to avoid depending on gtk.h */
|
||||||
|
|
||||||
/* Things pterm.c needs from gtkdlg.c */
|
/* Things pterm.c needs from gtkdlg.c */
|
||||||
int do_config_box(const char *title, Config *cfg, int midsession);
|
int do_config_box(const char *title, Config *cfg,
|
||||||
|
int midsession, int protcfginfo);
|
||||||
void fatal_message_box(void *window, char *msg);
|
void fatal_message_box(void *window, char *msg);
|
||||||
void about_box(void *window);
|
void about_box(void *window);
|
||||||
void *eventlogstuff_new(void);
|
void *eventlogstuff_new(void);
|
||||||
|
@ -40,7 +40,7 @@ Backend *select_backend(Config *cfg)
|
|||||||
|
|
||||||
int cfgbox(Config *cfg)
|
int cfgbox(Config *cfg)
|
||||||
{
|
{
|
||||||
return do_config_box("PuTTY Configuration", cfg, 0);
|
return do_config_box("PuTTY Configuration", cfg, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int got_host = 0;
|
static int got_host = 0;
|
||||||
|
@ -598,7 +598,7 @@ int do_config(void)
|
|||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ctrlbox = ctrl_new_box();
|
ctrlbox = ctrl_new_box();
|
||||||
setup_config_box(ctrlbox, &sesslist, FALSE, 0);
|
setup_config_box(ctrlbox, &sesslist, FALSE, 0, 0);
|
||||||
win_setup_config_box(ctrlbox, &dp.hwnd, (help_path != NULL), FALSE);
|
win_setup_config_box(ctrlbox, &dp.hwnd, (help_path != NULL), FALSE);
|
||||||
dp_init(&dp);
|
dp_init(&dp);
|
||||||
winctrl_init(&ctrls_base);
|
winctrl_init(&ctrls_base);
|
||||||
@ -624,7 +624,7 @@ int do_config(void)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int do_reconfig(HWND hwnd)
|
int do_reconfig(HWND hwnd, int protcfginfo)
|
||||||
{
|
{
|
||||||
Config backup_cfg;
|
Config backup_cfg;
|
||||||
int ret;
|
int ret;
|
||||||
@ -632,7 +632,7 @@ int do_reconfig(HWND hwnd)
|
|||||||
backup_cfg = cfg; /* structure copy */
|
backup_cfg = cfg; /* structure copy */
|
||||||
|
|
||||||
ctrlbox = ctrl_new_box();
|
ctrlbox = ctrl_new_box();
|
||||||
setup_config_box(ctrlbox, &sesslist, TRUE, cfg.protocol);
|
setup_config_box(ctrlbox, &sesslist, TRUE, cfg.protocol, protcfginfo);
|
||||||
win_setup_config_box(ctrlbox, &dp.hwnd, (help_path != NULL), TRUE);
|
win_setup_config_box(ctrlbox, &dp.hwnd, (help_path != NULL), TRUE);
|
||||||
dp_init(&dp);
|
dp_init(&dp);
|
||||||
winctrl_init(&ctrls_base);
|
winctrl_init(&ctrls_base);
|
||||||
|
@ -1900,7 +1900,7 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT message,
|
|||||||
GetWindowText(hwnd, cfg.wintitle, sizeof(cfg.wintitle));
|
GetWindowText(hwnd, cfg.wintitle, sizeof(cfg.wintitle));
|
||||||
prev_cfg = cfg;
|
prev_cfg = cfg;
|
||||||
|
|
||||||
if (!do_reconfig(hwnd))
|
if (!do_reconfig(hwnd, back ? back->cfg_info(backhandle) : 0))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -327,7 +327,7 @@ void win_setup_config_box(struct controlbox *b, HWND *hwndp, int has_help,
|
|||||||
*/
|
*/
|
||||||
void defuse_showwindow(void);
|
void defuse_showwindow(void);
|
||||||
int do_config(void);
|
int do_config(void);
|
||||||
int do_reconfig(HWND);
|
int do_reconfig(HWND, int);
|
||||||
void showeventlog(HWND);
|
void showeventlog(HWND);
|
||||||
void showabout(HWND);
|
void showabout(HWND);
|
||||||
void force_normal(HWND hwnd);
|
void force_normal(HWND hwnd);
|
||||||
|
Loading…
Reference in New Issue
Block a user