* Use disconnected() instead of readChannelFinished().
* Cleanup. There are three bidirectional pipes conceptually:
console <-> agent
agent <-> server
server <-> client
If one end of a pipe dies, start closing the other end, then clean up.
If the console dies (e.g. because cmd.exe exits), we still want to
collect the final console output and send it to the client.
To help with this, in the Agent, I call GetConsoleProcessList, then
scrapeOutput, then (potentially) disconnectFromServer.
- Add a very incomplete "telnet" server. It doesn't recognize any telnet
commands, so it's "telnet" only in the sense that I can connect to the
server and type commands. The commands are fed to a Win32 Console, but
I don't get to see the output over the network.
- Move AgentClient to the Shared directory and move QtEvent-specific code
out of it.
- Move the startShell routine into the AgentClient so I can share it
between the different console-consuming prototypes.