31d78dceb5
ConptyConnection has two different failure modes: 1. We failed to initialize the pseudoconsole or create the process 2. The process exited with an error code. Until this commit, they were treated the same way: closeOnExit=always would force the pane/tab to be destroyed. This was very bad in case 1, where we would display a (possibly useful) error message and then immediately close the window. This was made even worse by the change in #10045. We removed startingDirectory validation and promoted it to an error message (so that we could eventually let the connection handle startingDirectory in its own way.) This of course revealed that a number of users had set invalid starting directories… and those users included some who set closeOnExit to always. Boom: instant "terminal opens and crashes"¹ In this commit, we introduce detection for a connection that fails before it's been established. When that happens, we will ignore the user's closeOnExit mode. ¹ It only looks like a crash; it's actually _technically_ functioning properly. Closes #10225. |
||
---|---|---|
.. | ||
Resources/en-US | ||
AzureClient.h | ||
AzureClientID.h | ||
AzureConnection.cpp | ||
AzureConnection.h | ||
AzureConnection.idl | ||
ConnectionStateHolder.h | ||
ConptyConnection.cpp | ||
ConptyConnection.h | ||
ConptyConnection.idl | ||
CTerminalHandoff.cpp | ||
CTerminalHandoff.h | ||
EchoConnection.cpp | ||
EchoConnection.h | ||
EchoConnection.idl | ||
init.cpp | ||
ITerminalConnection.idl | ||
packages.config | ||
pch.cpp | ||
pch.h | ||
TerminalConnection.def | ||
TerminalConnection.vcxproj | ||
TerminalConnection.vcxproj.filters |