Control Panel website renewed with a better look and mobile friendly;
New memory management resulting in a small memory footprint;
A LOT of bugs and memory leaks fixed;
Added new functionality.
Quote was not at the beginning of the image pad when installing as service.
Change the manifest, so it can run on all the systems in their context (instead of the context of an older system).
Two new modes of memory where added. Instead of calling VirtualAlloc for every peace of memory, it will divide the unused memory over other memory requests. See 'About the source code' for more details;
Memory leak in IsUserInteractive, the Sid was never freed;
VirtualAlloc now requests non-executable memory instead of executable (what was I thinking);
Added data execution prevention to 32-bit version.
x64 crashed when booting as a service in Windows 10 because of a non-algined stack;
When setting-up a new service with a protocol that had no propeties, it would crash;
When loading a ListenSession from registry a value was read as pdword (which is a qword in x64) when only 4 bytes where reserved for this. This was overwriting memory not reserverd for this value.
When TV’s server is shutdown through the service menu or through function ShutdownServer the connection will be shutdown by calling CloseListenSessionEx for every ListenSession, instead of just killing the process (this sometimes was causing problems when there where some active connections);
When a ListenSession in registry was not able to start, unload all the memory instead of making ‘ghost’ ListenSessions.
FreeInternalProtocolSession and FreeLProtocolSession where added.
Setting Keep-alive variables through the control panel.
initilize_socket_api was using ESP instead of platform in depended pesp. That may have caused crashes or unexpected behavior on x64 systems;
When CloseClientSession is called a flag is set that will make every TCP/IP function return that the connection was closed, instead of just closing the socket without propper closer.
Sends CGI results in chunks to be able to have persistent connections
Same for Directory Listening pages;
Options ‘Multiple requests allowed on one connection’ added to the control panel to turn ‘persistent connections’ on/off.
It did not detect the file-extension properly and returned a wrong Mime-type when the filename had multiple dots;
When launching a CGI application the header was not always handled properly, a double dot was changed to a zero byte and never changed back.
Control panel plugin
Completely new control panel we with a better look and mobile friendly;
Index page ‘index.html’ added;
Send files in chuncks to be able to have persistent connections;
Options ‘Multiple requests allowed on one connection’ added to the control panel to turn ‘ persistent connections’ on/off;
Option ‘Maximum timeout’ was added.
Function did not detect the file-extension properly and returned a wrong Mime-type when a filename had multiple dots;
When a request included a ListenSession it would replace tags assigned for the ListenSession with the requested one It would always replace the target tag with the requested ListenSession, even if the ListenSession was invalid or not a number. This was a serious injection security problem;
Same for the protocol session;
The requested copy of all the ListenSessions was freed instead of the old copy. This was no problem in the previous version of TV’s server since the function never freed anything and the request function just returned the internal used list.
When creating a new service there was a huge memory leak that sometimes causes TV’s server to gain about 1GB of RAM.
Memory leak in functions GenerateMenuProtocols, GenerateMenuSubmenuFromBindedToHandle, SendEmptyFields fixed.
If another controlpanel port was set during setup, the setup did navigate to the default port when “Open settings” was selected.