all use format() the same way. also changed format() to actually
do formatting. however, it doesn't try looking up formatting
strings by id, it just uses the fallback format string.
init() it while it's already running. fixed an uninitialized
pointer bug in CServer and some cleanup-on-error code in
CMSWindowsPrimaryScreen. also added timeout to read() on
IInputStream and a heartbeat sent by clients so the server
can disconnect clients that are dead but never reset the TCP
connection. previously the server would keep these dead
clients around forever and if the user was locked on the
client screen for some reason then the server would have to
be rebooted (or the server would have to be killed via a
remote login).
on clients that cause us to use too much memory. also put
methods in CHTTPRequest to get/set headers and changed the
data structure used to store them. fixed a couple of other
miscellaneous bugs in CHTTPProtocol.cpp.
CServer to the primary screen when the configuration changes so it
can make necessary adjustments (the win32 primary screen must tell
the hook dll about the new jump zones).
changed includes of some std c++ library files to go through
our own include files. these wrap the include with stuff to
keep vc++ quiet when compiling at warning level 4, which is
what it does now. it also works around missing <istream> and
<ostream> on g++2.96.
added missing std:: where necessary. g++ doesn't really support
namespaces so it lets references without the namespace slip
through.
added workaround or fix. not sure if istringstream::str(string)
should reset eofbit. it does on g++ but does not on vc++.
added clear() after str() so it works either way.
added low-level keyboard hook to win32. if available (it's only
available on NT SP3 and up) it allows us to catch and handle
alt+tab, alt+esc, ctrl+esc, and windows key hot keys. i think
that leaves only ctrl+alt+del and accessibility functions
uncaught on those systems.