X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=sshshare.c;h=82c4bd31ed8867755fcad1b467356450c3df5410;hb=5471539a6738484b48fb938c88dce547a3e4b299;hp=6222003969fc6529ba04f283ff9a310e45c31ca5;hpb=7c2ea22784912b65e19027a9a9cf499258179742;p=PuTTY.git diff --git a/sshshare.c b/sshshare.c index 62220039..82c4bd31 100644 --- a/sshshare.c +++ b/sshshare.c @@ -133,6 +133,7 @@ #include #include #include +#include #include "putty.h" #include "tree234.h" @@ -914,8 +915,25 @@ static int share_closing(Plug plug, const char *error_msg, int error_code, int calling_back) { struct ssh_sharing_connstate *cs = (struct ssh_sharing_connstate *)plug; - if (error_msg) - ssh_sharing_logf(cs->parent->ssh, cs->id, "%s", error_msg); + + if (error_msg) { +#ifdef BROKEN_PIPE_ERROR_CODE + /* + * Most of the time, we log what went wrong when a downstream + * disappears with a socket error. One exception, though, is + * receiving EPIPE when we haven't received a protocol version + * string from the downstream, because that can happen as a result + * of plink -shareexists (opening the connection and instantly + * closing it again without bothering to read our version string). + * So that one case is not treated as a log-worthy error. + */ + if (error_code == BROKEN_PIPE_ERROR_CODE && !cs->got_verstring) + /* do nothing */; + else +#endif + ssh_sharing_logf(cs->parent->ssh, cs->id, + "Socket error: %s", error_msg); + } share_begin_cleanup(cs); return 1; }