mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-01-10 01:48:00 +00:00
Close the listening socket when a sharing upstream dies.
Without this, doing 'Restart Session' on Windows in a session with sharing enabled but no actual sharing being done would crash, because the first incarnation of the session would become an upstream and establish a listening named pipe, which then wouldn't get cleaned up when the session closed, so the restarted session would try to connect to it, triggering a call to plug_accepting on a freed sharestate. [originally from svn r10216]
This commit is contained in:
parent
9fa5b9858c
commit
aa62bce083
@ -517,6 +517,10 @@ void sharestate_free(void *v)
|
|||||||
share_connstate_free(cs);
|
share_connstate_free(cs);
|
||||||
}
|
}
|
||||||
freetree234(sharestate->connections);
|
freetree234(sharestate->connections);
|
||||||
|
if (sharestate->listensock) {
|
||||||
|
sk_close(sharestate->listensock);
|
||||||
|
sharestate->listensock = NULL;
|
||||||
|
}
|
||||||
sfree(sharestate->server_verstring);
|
sfree(sharestate->server_verstring);
|
||||||
sfree(sharestate->sockname);
|
sfree(sharestate->sockname);
|
||||||
sfree(sharestate);
|
sfree(sharestate);
|
||||||
@ -1843,6 +1847,7 @@ static int share_listen_closing(Plug plug, const char *error_msg,
|
|||||||
ssh_sharing_logf(sharestate->ssh, 0,
|
ssh_sharing_logf(sharestate->ssh, 0,
|
||||||
"listening socket: %s", error_msg);
|
"listening socket: %s", error_msg);
|
||||||
sk_close(sharestate->listensock);
|
sk_close(sharestate->listensock);
|
||||||
|
sharestate->listensock = NULL;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user