X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=be_misc.c;h=e479aa3b31224684b51cb5d3b3acebd8f6fd3b09;hb=15386cbe927fc85ac2fed0bb47704645c4b67dad;hp=739f1602876cbef0be57c7af47eebf1b3e79c1fb;hpb=297efff30350ddffbc77dd6da4269db87103789c;p=PuTTY.git diff --git a/be_misc.c b/be_misc.c index 739f1602..e479aa3b 100644 --- a/be_misc.c +++ b/be_misc.c @@ -2,12 +2,16 @@ * be_misc.c: helper functions shared between main network backends. */ +#include +#include + #define DEFINE_PLUG_METHOD_MACROS #include "putty.h" #include "network.h" void backend_socket_log(void *frontend, int type, SockAddr addr, int port, - const char *error_msg, int error_code) + const char *error_msg, int error_code, Conf *conf, + int session_started) { char addrbuf[256], *msg; @@ -27,7 +31,22 @@ void backend_socket_log(void *frontend, int type, SockAddr addr, int port, case 2: /* Proxy-related log messages have their own identifying * prefix already, put on by our caller. */ - msg = dupstr(error_msg); + { + int len, log_to_term; + + /* Suffix \r\n temporarily, so we can log to the terminal. */ + msg = dupprintf("%s\r\n", error_msg); + len = strlen(msg); + assert(len >= 2); + + log_to_term = conf_get_int(conf, CONF_proxy_log_to_term); + if (log_to_term == AUTO) + log_to_term = session_started ? FORCE_OFF : FORCE_ON; + if (log_to_term == FORCE_ON) + from_backend(frontend, TRUE, msg, len); + + msg[len-2] = '\0'; /* remove the \r\n again */ + } break; default: msg = NULL; /* shouldn't happen, but placate optimiser */