X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/4838c7c65b8d42abce7cd95c8b7c5037072efb6b..5f86b177eb3f358d0813646102e3da720b809771:/unix/gtkdlg.c diff --git a/unix/gtkdlg.c b/unix/gtkdlg.c index 2a293804..77661299 100644 --- a/unix/gtkdlg.c +++ b/unix/gtkdlg.c @@ -1956,7 +1956,6 @@ int do_config_box(const char *title, Config *cfg, int midsession, GtkTreeItem *treeitemlevels[8]; GtkTree *treelevels[8]; struct dlgparam dp; - struct sesslist sl; struct Shortcuts scs; struct selparam *selparams = NULL; @@ -1964,8 +1963,6 @@ int do_config_box(const char *title, Config *cfg, int midsession, dlg_init(&dp); - get_sesslist(&sl, TRUE); - listitemheight = get_listitemheight(); for (index = 0; index < lenof(scs.sc); index++) { @@ -1975,7 +1972,7 @@ int do_config_box(const char *title, Config *cfg, int midsession, window = gtk_dialog_new(); ctrlbox = ctrl_new_box(); - setup_config_box(ctrlbox, &sl, midsession, cfg->protocol, protcfginfo); + setup_config_box(ctrlbox, midsession, cfg->protocol, protcfginfo); unix_setup_config_box(ctrlbox, midsession); gtk_setup_config_box(ctrlbox, midsession, window); @@ -2161,7 +2158,6 @@ int do_config_box(const char *title, Config *cfg, int midsession, gtk_main(); - get_sesslist(&sl, FALSE); dlg_cleanup(&dp); sfree(selparams); @@ -2294,8 +2290,9 @@ int reallyclose(void *frontend) return ret; } -void verify_ssh_host_key(void *frontend, char *host, int port, char *keytype, - char *keystr, char *fingerprint) +int verify_ssh_host_key(void *frontend, char *host, int port, char *keytype, + char *keystr, char *fingerprint, + void (*callback)(void *ctx, int result), void *ctx) { static const char absenttxt[] = "The server's host key is not cached. You have no guarantee " @@ -2332,7 +2329,7 @@ void verify_ssh_host_key(void *frontend, char *host, int port, char *keytype, ret = verify_host_key(host, port, keytype, keystr); if (ret == 0) /* success - key matched OK */ - return; + return 1; text = dupprintf((ret == 2 ? wrongtxt : absenttxt), keytype, fingerprint); @@ -2346,17 +2343,20 @@ void verify_ssh_host_key(void *frontend, char *host, int port, char *keytype, sfree(text); - if (ret == 0) - cleanup_exit(0); - else if (ret == 2) + if (ret == 2) { store_host_key(host, port, keytype, keystr); + return 1; /* continue with connection */ + } else if (ret == 1) + return 1; /* continue with connection */ + return 0; /* do not continue with connection */ } /* * Ask whether the selected algorithm is acceptable (since it was * below the configured 'warn' threshold). */ -void askalg(void *frontend, const char *algtype, const char *algname) +int askalg(void *frontend, const char *algtype, const char *algname, + void (*callback)(void *ctx, int result), void *ctx) { static const char msg[] = "The first %s supported by the server is " @@ -2375,9 +2375,9 @@ void askalg(void *frontend, const char *algtype, const char *algname) sfree(text); if (ret) { - return; + return 1; } else { - cleanup_exit(0); + return 0; } } @@ -2424,7 +2424,8 @@ static void licence_clicked(GtkButton *button, gpointer data) "Portions copyright Robert de Bath, Joris van Rantwijk, Delian " "Delchev, Andreas Schultz, Jeroen Massar, Wez Furlong, Nicolas " - "Barry, Justin Bradford, Ben Harris, Malcolm Smith, and CORE SDI S.A.\n\n" + "Barry, Justin Bradford, Ben Harris, Malcolm Smith, Ahmad Khalifa, " + "Markus Kuhn, and CORE SDI S.A.\n\n" "Permission is hereby granted, free of charge, to any person " "obtaining a copy of this software and associated documentation " @@ -2748,7 +2749,8 @@ void logevent_dlg(void *estuff, const char *string) es->nevents++; } -int askappend(void *frontend, Filename filename) +int askappend(void *frontend, Filename filename, + void (*callback)(void *ctx, int result), void *ctx) { static const char msgtemplate[] = "The session log file \"%.*s\" already exists. "