Reload this page using its associated frames

Alternative flat file package 'installers' for original Cavedog stuff

The file packages below contain the unit respectively map data stripped off of their installer programs. Dumping those files into the TA root folder works much faster than running the installer program for each unit and map. A manual 'installation' of this data is also the only way to overcome the problem some of the installers have with x64 based Windows operating systems.
If you are not familiar with the concept of Windows file folders and extracting files from Zip archives then you should stick to the installer programs though.

Units not included in any patch or expansion

The following units never made it into any TA patch or expansion. To get a complete set of all official TA units you have to install these six units besides the TA:CC expansion.
You 'install' the units by simply unpacking the Zip archive straight into the root folder of your TA installation on the hard disk.

flat file package with six last units published by Cavedog (0.22 MB)

Additonal maps released by Cavedog

A majority of the maps in the package below never made it into one of the expansion sets of the game although they were available for download on the official Cavedog web site.
You 'install' the maps by simply unpacking the Zip archive straight into the root folder of your TA installation on the hard disk.

Note

Some of the maps in the package won't work if you don't have the Core Contingency expansion installed

flat file package with stand alone maps published by Cavedog (49.9 MB)

TA Demo Recoder

Although refered as recorder only this third party tool allows you to record and to replay TA games you either recorded yourself on your computer or anyone else on theirs.
Principle the recorder is implemented by putting a new Direct Play DLL into your TA directory. Since the original Direct Play DLL as shipped with the operating system is left untouched other games besides TA will still use the original DLL in the system folder thus avoiding conflicts. Now, the modified DLL hooks into any Direct Play function the Totala.exe may call during a online game thus allowing to log the whole network traffic between the computer of the recording player and the other players computers into a file. It's sufficient to record a multiplayer game at one end to get all data needed to reconstruct the complete game later on from the log file since TA is using a peer to peer communication approach to exchange the game data. That means every computer is transfering its game data to each other computer all time. In fact a game with for example three players is processed three times at once - one time on each players computer.
Keep in mind a recording of the same multiplayer TA game done by two different players will differ. How much they differ depends from the quality of the network connection between the players and the speed of their computers.
The replayer (which is part of the recorder) is used to replay any previously loggd game data. It opens the game log and feeds the data right into a launched TA setup for a multiplayer game. All this is done automatically for you and you don't need to connect to the Internet to replay a TA recording either.
The recorder is only able to record multiplayer games. You can't use it to record singleuser games like missions or skirmish games.
The current recorder version is 0.99b2 and besides the features described above it includes way more usefull integrated tools than I mentioned. I also included the previous version 0.97b since some people claim to get a worse game performance with the latest version.
The recorder comes with a self installer and a very good HTML documentation. I recommend you read this manual before you start to bother other TA players with questions already answered in the manual.

Finally I should mention the people who made this (in my opinion) most important addon for TA - the Swedish Yankspankers. I belive the recorder is even more important than the official TA expansion TA:CC which just introduced some new units while the recorder helped hundreds of TA players (including me) to learn how to play this game. And it's still the one and only tool allowing to detect at least some of the cheating programs available for TA.

NOTE

If you have a slow system, like an Pentium II 233 MHz you should not install the recorder. At least switch the option that allows to record every game on default off. The recorder consumes additional CPU time to process the data and that will noticably slow down the game for all players in the game.

TA Recorder commands working on computers without the recorder

Playing people with the TA Recorder installed while you don't use it can be a real disadvantage. For example, the key macro support (also referred as tahook) allows you to queue long build orders for construction units in no time. No more time wasting with the queue key SHIFT which consumes quite some time when micromanaged. Other features like the idle construction unit finder, the shared Line Of Sight, the 100 units at once queue change for factories and last not least the map drawing and marker functions clearly will give the Recorder users an advantage over someone without it. But all of these functions can be switched off by using the following commands in the battle room chat line. These commands will affect any computer with the TA recorder installed and invovled into the game, no matter if the computer where you issue them runs the TA Recorder or not. All TA recorder commands begin with a dot character in order to tell them apart from the original game commands starting with the plus sign
Note: The best solution to overcome the disadvantages above is still to install the TA Recorder rather than switching these features off. There is really no reason for not installing the recorder, except for users of old and slow computer systems.
Command Supported in Version Effect
.report 0.97b and higher Shows everyone who has the recorder installed and if the recording function is switched on. If you see the letter T at the first position of the status flag tripple recording is switched on otherwise not. For example [T--] tells you the game will be recorded by this particular player, [---] shows the recording function being turned off at that computer.
.tahookoff 0.98b5 or higher, 0.97b with tahook option installed Turns the key macro feature off as well as the idle construction unit finder and resets the number of units queued at once in a factory when using the SHIFT key from 100 back to 10.
.ehaoff 0.98b5 or higher Disables Line Of Sight Sharing between allies, map draw and map marker option as well as 100 unit change for factory queuing and idle construction unit finder. Principle this switches off all the new features introduced with version 0.98b5 and runs it in 0.97b mode.

The TA Recorder files

tademo99b2.exe (1.38 MB) Latest version of the TA Recorder.
tademo97.exe (0.53 MB) Previous version of the TA Recorder. Use on slow machines or if you encounter problems with screwed TA in game graphics when using the more recent version above.

Note that the Swedish Yankspankers have relased the source code for the TA recorder so you might run into 'inofficial' versions elsewhere on the Internet.

Third party maps

Although I'm not interested in third party units and maps I linked a few maps in here because they are picked for online games quite often or they are needed for watching some of the recordings I put on this site.

Grand Canyon V1 (1.29 MB)
Great Divide 2 (0.98 MB)
Painted Desert Marathon (3.71 MB)

You also may want to check the section containing additional Maps created by CD

TATunnel

TATunnel allows to tunnel the traffic between a single ta client instance located in a restricted network and other ta instances on the Internet thru multiple TCP lanes established between a tunnel server endpoint located on the Internet and a tunnel client end point located in the same restricted network as said ta client.
The two tunnel endpoints are implemented as two separate programs, TATunnelServer.exe and TATunnelClient.exe. The latest distribution packet can be obtained from the version overview section. .

You can verify the origin of the two programs by calculating their MD5 fingerprint with a MD5 calculator. If the checksums differ from those documented in the manifest.txt file shipped with each program files Zip archiv then the programs have not been compiled by me but someone else and may contain changes which are not documented in the sources to be found on this site.
If you think that the MD5 program above may already contain backdoor hacks itself then get the MD5 sources and compile the executable yourself.
Alternatively you can use the PGP signature files referred in the version overview section to verify the origin of the respective Zip Archiv containing the executable or source files for a particular distribution.

Anyone who either wants to compile the programs himself in order to make absolutely sure that they contain no backdoors and hacks or who is just curious to learn how TATunnel works will need the source code which can be obtained from the version overview section as well.
The program has been developed using Microsoft's Visual C++ 6.0 IDE so don't expect to find any makefiles among the sources. All I can offer are the project files for the IDE mentioned above. To create your own set of executables with another compiler/linker in a different development environment you'll have to create your own set of makefiles/project files suiting the environment you prefer.
If you plan to take a serious look at the program code then you should start with section V. Code documentation in the project's documentation before you take a look at the comments within the source files. The information to be found in the documentation will hopefully give you an idea about the 'big picture' behind the the tunnel program.

TATunnel call syntax

The command line parameters for both tunnel end point programs are described in the the project's documentation

TATunnel exit codes

Right now there is no external control interface for TATunnelServer.exe that would allow to shut down the program in a gracefull way. So the server side tunnel end will just run in an endless loop until a severe error occures in the tunnel link thread (which is the application's main thread) or one of the instantiated game manger threads.
Errors occuring in any of the game manager instances' bridge child threads will only lead to the termination of the game manager instance and its associated bridge threads but not the tunnel link thread itself.
In case the tunnel link thread or one of its child game manger instance threads gets interrupted by an exception the program breaks out of the tunnel link thread's execution loop and termiantes with an exit code set to the TATunnel internal id of the exception thrown in response to the error condition.

TATunnelClient.exe will terminate with an exit code of zero except a severe error occured during code execution of its game manager thread (which is the application's main thread).
If the game manager thread itself gets interrupted by an exception then the program will terminate with an exit code set to the TATunnel internal id of the exception thrown in response to the error condition.

A documentation of all TATunnel internal exception ids can be found in the files TATunnelServer_exception_codes.txt, TATunnelClient_exception_codes.txt and shared_exception_codes.txt shipped with the source file Zip Archiv of the respective TATunnel distribution.

TATunnel versions

Build Date Distribution Downloads
2006/02/04 4
  • Starting with this distribution package a 64bit (x64) version of all TATunnel programs is shipped together with the 32bit (x86) version. By the term x64 I'm referring to CPUs either supporting the AMD64 or the EM64T standard. Note though that the compiler used to assemble the x64 version was optimized for the AMD64 standard so performance might not be optimal when running the x64 programs on a Intel CPU with EM64T.
    It's also possible to setup a tunnel environment using a mix of x64 and and x86 TATunnel endpoint programs but you can certainly still setup a pure x64 or x86 tunnel as well.

    Important

    In contrast to mixing the x64 and x86 endpoints originating from the same distribution package mixing endpoint programs from different distributions is not recommended. Although this might work at times (depending on the changes applied between the involved distributions) you may also end up with running into some weird errors or a really strange program behavior.

  • Details on how the x64 versions of the tunnel endpoint programs have been created can be found in section V., chapter 4. of the documentation .
  • Please note that starting with this distribution the PGP signing key has changed. The PGP key page lists all public keys I have used on this web site so far. Files on this site are signed with the Diffie-Hellman/DSS version of the key.
Program files Zip Archiv PGP signature
Source files Zip Archiv PGP signature
Revision documentation Text file PGP signature
2005/08/14 3 Program files Zip Archiv PGP signature
Source files Zip Archiv PGP signature
Revision documentation Text file PGP signature
2005/06/01 2 Program files No longer available. No longer available.
Source files No longer available. No longer available.
Revision documentation Text file PGP signature
2005/05/16 1 Program files No longer available. PGP signature

DirectPlay registry patcher

Written to fix problems caused by missing or wrong DirectPlay Windows Registry entries for multiplayer TA. Check the installation documentation to learn what steps are required before you can run the program on your computer. The installation primer does also explain how to run the tool in its simplest mode without any call arguments. If you want to take more control over the program's actions you should read on here once you have completed the installation process in order to learn more about the program's command line parameters.

For people who want to make sure they got the orignal taregfix2.exe program: You can check the list with the version/MD5 information at the end of this section. You can download md5.exe if you need a program to check MD5 fingerprints. The MD5 sources are also available.

The pranoids amongst us may prefer to compile taregfix2.exe's source code themselves after making sure it contains no hacks or backdoors. The source is suited for use with Microsoft's Visual C++ 2008 Express Edition.

Registry patcher call syntax

taregfix2 [-c] [-a] [-n] [-d <absolute TA path>]
[-b <binary>] [-l <command line>] [-f <front end>]
[-i <IP address> -p <TCP port>]

All parameters are otional and the simplest call format is without any parameter given. This format addresses people who don't want to fiddle around with the command line parameters. For example, if you have only one TA installation on your drive and want a quick Registry fix for it than just call taregfix2 without any switch or parameter. It will automatically locate your TA directory and update the Registry without any further user interaction if the following conditions to be true:

  • The switch -a (description see below) was omitted
  • Only one TA directory was found on the fixed disk drives (the expansion installation backup folders are excluded from the search by default)
  • The totala.exe file in that particular directory could be identified by a well known MD5 fingerprint
Otherwise taregfix2 will come up with a list of TA directories to pick one from for further processing. To avoid the interactive mode the program would enter once it found more than one directory with a totala.exe file use the switch -d. Check and update operations against the registry will then be done without any acknowledgement requests even if the TA version found in <absolute TA path> couldn't be identified by a valid MD5 fingerprint.

-c will cause the explicitly given, implicitly selected or interactively picked TA directory to be checked against the current Registry settings rather than updating the Registry data.

-a is only of interest when <absolute TA path> is omitted. When set directories with the same folder name as the standard backup folders created by the TA expansions installers are not ignored when searching for TA installations. The only two values on the ignore list are currently backup (created by TA:CC) and btbackup(created by TA:BT). So if you have a TA installation residing in a folder named C:\STRANGE\BACKUP you need to use this flag otherwise the search algorithm will ignore a totala.exe file found there. On the other hand sub folders of ignored folders are not excluded from the search. If a TA installation resides in C:\STRANGE\BACKUP\MYTA then the folder is recognized as a valid TA directory even without using the -a switch.

-n avoids the 10 second delay before exiting the program. The dealy is active by default in order to give the user enough time to read error or success messages.

-b will put the value <binary> rather totala.exe in the registry field 'File'. If you omitt this switch then taregfix2 will put the default value totala.exe in the registry. A prerequisite is that <binary> resides in the same directory as indicated by the -d switch respective as picked from the TA directory list in interactive mode. A TA game service client program will then run <binary> instead of totala.exe when a game session is launched.
Although you can theoretically configure whatever executable file you want for the 'File' registy entry you have to keep in mind that the binary has to be a Lobby-Aware Application thus it must call IDirectPlayLobby3::GetConnectionSettings at program startup and has to establish communication with the game service client via the DirectPlay7 Lobby Interface once it became aware of a lobby launch.
You may want to use this function if you have at least two different versions of totala.exe in the same TA directory under different names and want to switch between them before playing a game service game. For instance if there is a hacked totala_hacked.exe and an original totala.exe in the TA directory d:\games\ta and you want the game service lobby launcher to use totala_hacked.exe rather than totala.exe then call taregfix2 as follows:

taregfix2 -d d:\games\ta -b totala_hacked.exe

-l will put he value <command line> rather than the targefix2 default -c into the registry field 'CommandLine'. The command line value -c will skip the intro movie when TA is launched. Basically the -l switch allows to configure any command line for <binary> you want.

-f will create a registry entry for Ripple DirectPlay7 Lobby launching. <front end> refers to a program residing in the same directory as indicated by the switch -d respective as picked in interactive mode from the TA directory list. Once the value is set in the registry the game service client program won't launch <binary> (or totala.exe) but <front end>. The difference is that <front end> doesn't need to be a Lobby-Aware Application, it can be any simple executable file excuting whatever operations you want. As soon as <front end> is done with its prae launch operations it has to call the actual application, which would usally be totala.exe. For launching the actual application <front end> can use a simple CreateProcess() API call thus it doesn't need to setup any DirectPlay7 communication link between the game service program which started it and the actual application to start. The only prerequisite is that <front end> passes all command line parameters it was launched with to the actual application to be launched except the first one which is its own program name. Passing those parameters is so important because one of them is a special value that will allow the Lobby-Aware Application to establish a direct link to the game service client program thus bypassing <front end> completely. Once the actual application runs it's save to terminate <front end>.
For example I use the Ripple Launching on my dual CPU computer for runnign a <front end> that starts totala.exe pinned to one CPU.

-i and -p allow to send the output the program generates to an echo server that runs on another computer via a TCP/IP connection. This is intended to be used for remote support. It's a one way street (as you will see when you study the source files), there is no way for the echo server to send any data into the other direction. I added this option because I learned that some people have problems to interpret the program output and need to be talked thru the process of fixing the registry, especially if more than one TA installation was found and they get stuck at the selection screen.
To display the echo output on the other computer you need to launch an echo server program that can handle the echoed output taregfix2 streams to that IP and TCP port number. I provided a very simple EchoStream server which should be sufficient for use with taregfix2.
Since activating the echo interface requires to launch taregfix2.exe with command line switches I also decided to add the option to put the IP echo server address and the TCP/IP port number in a simple textfile named taregfix2.cfg. The first line has to contain the IP address, the second line the TCP/IP port number. The file must be placed in the same folder where taregfix2.exe resides in order to be reconized by taregfix2.exe. Do not add the switches -i and -p to the lines in the configuration file, just put the actual values in.
The command line parameters -i and -p have a higher priority than the entries in the configuration file, thus the file is ignored if the programm was called with these two prameter.

Be aware that game service client programs may override any of the values in the registry. The PhoeniX WorkX client for example seems to empty registry entry assocciated with <command line> every time before it starts a game.

Registry patcher interactive mode commands

In interactive mode a simple command line appears at the end of the list showing the TA directories found. The following inputs are reconised (you have to finalize every input by using the Enter key):

Option Key(s) Effect
Enter position Two digit wide number Selects one of the directories for further processing. You can use any number in the range of the whole list size even if it refers to a line not visible right know.
f(orward) f Displays the next page of the directory list.
b(ackwards) b Displays the previous page of the directory list.
trim l(eft) l Displays the maximum possible part of a path name too long to fit into a display line beginning at the left end. The left trim truncate indicator '>>>' will appear at the end of the path to state the fact it has been cut off for display purpose. The left trim option is the default truncate policy and you can use this command to restore it.
trim r(ight) r This is the counter part to the left trim option. Displays the maximum possible part of a path name too long to fit into a display line beginning at the position that allows to output the path from there to its right end. The right trim truncate indicator '<<<' will appear at the begin of the path to state the the fact it has been cut off for display purpose.
a(bort) a Exits taregfix2 without taking any further actions like checking or updating the DirectPlay registry entries for TA.

Registry patcher well known TA versions

For the time being taregfix recognises the well known totala.exe versions listed below. The MD5 fingerprints have been computed based on the US version of TA, TA:CC and TA:BT. In case taregfix2.exe can't identify a particular totala.exe version it may have been modified by another program besides the TA Demo Recorder 0.98b5 installer or an old Boneyards version of the 3.1 patch is still installed. In this case the MD5 fingerprint of the unknown version instead the well known version string will be displayed.
totala.exe Version MD5 fingerprint Comment
unmodified TA 1.0 99b3105c7e7acd3599783a2e0881f741 You find this version either in the backup or BTBackup folder depending on what TA expansion you installed first.
unmodified TA 3.0 c8053ed575cceee39f3f573f7a9e565d This version was shipped with the US version of TA:CC I got back in 1998. It is identical to the TA:CC version I received with the US Commander Pack one year later. You will find this version in the BTBackup folder if you installed everything according the correct order.
unmodified TA 3.0a ddb75b6e06292e49c971ce42325bc562 This version was shipped with the US version of TA:BT I got with the US Commander Pack. I haven't bother with checking the version on the solely sold US TA:BT CD but I guess it will be the same.
unmodified TA 3.1c f76d367fbbd43008ae04c0f314a61b13 This is the 3.1c patch version. It does differ from the patches made for Boneyards which are often confused with the 3.1c patch because the BY versions are showing a '3' for the leading digit too.
TA Demo Recorder 0.98ß5/0.99ß2 with TA 3.1c 26bfc1b8a59ef28180f0c71fa9457b5b When TA is running under the operating systems Windows9x or WindwosME the TA Demo Recorder 0.98ß5 installer needs to modify the totala.exe file in order to make all of the features work. This is the fingerprint of the TA 3.1c version modified by the installer of TA Demo Recorder 0.98ß5 or 0.99b2. The installer leaves the totala.exe file untouched when running WindowsNT 4.0 or Windows2000 (I guess same is valid for WindowsXP but I haven't tried that out yet). You should just get the normal 3.1c patch fingerprint for those operating systems.

Registry patcher exit codes

Some of these return codes are used by both manifestations of taregfix2 (the installer taregfix2_setup.exe and the run time instance taregfix2.exe) some are only used by one of the two. The 'Used By' column will state which of the manifestations may return which value. All registry values refered in the table below are located at the key:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectPlay\Applications\Total Annihilation

The documented exit codes are only valid for the latest version. Previous versions may return different values.
Value Used By Meaning
0 both No error occured.
1 taregfix2_setup.exe The operating system call GetWindowsDirectory() failed with an OS error. The program wasn't able to retrieve the path of the operating system software root directory. Check the OS error part of the message for more details.
2 taregfix2_setup.exe The operating system call CreateFile() failed with an OS error. The program couldn't open the source file taregfix2_setup.exe when trying to create a copy of that file with the name taregfix2.exe in the windows operating system root folder. Check the OS error part of the message for more details.
3 taregfix2_setup.exe The operating system call CreateFile() failed with an OS error. The program couldn't open the destination file taregfix2.exe when trying to create a copy of taregfix2_setup.exe in the windows operating system root folder. Check the OS error part of the message for more details.
4 taregfix2_setup.exe One of the operating system calla ReadFile() or WriteFile() failed with an OS error. taregfix2_setup.exe could open the source and destination file but wasn't able to copy the complete file over to the windows operating system root folder. Check the OS error part of the message for more details.
51 taregfix2.exe An operating system error occured when the program tried to initialise the TCP/IP interface on the local computer. This error can only occure if the switches -i and -p have been used in order to attempt to redirect the program output to an remote echo server. The error indicates a problem with your local operating system network installation or that taregfix2 requested support for network functions which the socket interface on the local computer can't provide. Your computer may not support such a high level of windows socket support (especially on Windows95) and I may have to lower the minimum version number taregfix2 is requesting. Send me an email to tcbw@tcbw.net in case the OS error part of the message points into this direction.
52 taregfix2.exe The switch -i was followed by an IP address parameter that dosn't reperesent a vlid IPv4 internet address in dotted format. Check the command line for typos.
53 taregfix2.exe The operating system call socket() failed with an OS error. This can only occure when the switches -i and -p have been provided to contact a remote echo server. As with error code 13 above this may indicate a problem with your network installation on the local computer. Check the OS error part of the message for more details.
54 taregfix2.exe The operating system call connect() failed with an OS error. This can only occure when the switches -i and -p have been provided to contact a remote echo server. This indicates a problem with the remote host represented by the IP address and TCP port you used for the two switches. Check the OS error part of the message for hints why the remote machine could not be connected. If you misstyped the IP address or TCP port at the command line and try to connect the void (in other words there was no remote server listining at that IP address and on that TCP port number) you will get an according message after a little timeout elapsed and the client TCP interface finally gave up on trying to connect this 'ghost' server.
55 taregfix2.exe The operating system call send() failed with an OS error. This can only occure when the switches -i and -p have been provided to contact a remote echo server. This error means that a connection was made and even some data could be sent already but then the connection between the two endpoints suddenly failed. Possible reasons for this error are:
  • The remote echo server is operating with a restriction for the client IP address and the IP address of the computer executing taregfix2 differs from the allowed address. In this scenario the echo server accepted the connection first in order to retrieve the address of the client and closed the connection immediatly after recognising that client has no connect right.
    The earliest point in time when the client becomes aware of a disconnect on the server end is with the first send() call.
  • The remote server is no EchoStream server at all but a completely different program that is listening on that IP address and TCP port number for a diferent purpose. This sever program will disconnect its end point once it recognised the data taregfix2 sent so far makes no sense for it at all.
  • The remote echo server was stopped by the user at the other end. Either the program was terminated by accident or on purpose while the taregfix2 client was still sending output data.
  • The network route between the client executing taregfix2 and the remote echo server is broken. This includes failing routers and tansportation problems via the network route at hardware level as well as a possible disconnect from your ISP.
101 both The operating system call GetModuleFile() failed with an OS error. The program wasn't able to retrieve the path from where the program was launched. Check the OS error part of the message for more details.
102 both The program was called by using the wrong syntax. The order of the prameter dosn't matter but certain combinations are not allowed.
103 taregfix2.exe An attempt to open the echo server configuration file taregfix2.cfg lead to an error other than the file not existing. Check the OS error part of the message for more details.
104 taregfix2.exe A read operation on the successfully opened configiration file taregfix2.cfg failed with an error other than end of file. Check the OS error part of the message for more details.
105 taregfix2.exe Unexpected end of file for the successfully opened configiration file taregfix2.cfg occured. The file doesn't conatin all necessary entries.
201 taregfix2.exe An Operating System error occured when trying to retrieve the fixed drive list. Check the OS error part of the error message for possible reasons.
202 taregfix2.exe The fixed drive list was too long to fit in the buffer taregfix2 provides. This should not occure since the buffer is big enough to take up to 27 drive letters.
203 taregfix2.exe An Operating System error occured when taregfix2 requested access to a directory first time. Check the OS error part of the error message for possible reasons.

deprecated from version 1.0.4.0 onwards

204 taregfix2.exe An Operating System error occured when taregfix2 requested access to a single entry of a directory. Check the OS error part of the error message for possible reasons.

deprecated from version 1.0.4.0 onwards

205 taregfix2.exe No directory containing a totla.exe file could be found when searching the fixed drives. This error can only occure when <absolute TA path> is omitted. Maybe the -a switch has to be used to make taregfix2 recognise additional directories.
301 taregfix2.exe An Operating System error occured when taregfix2 tried to open a totala.exe file for MD5 fingerprint verification. Using the <absolute TA path> call syntax with a directory containing no totala.exe file will cause this error too. Check the OS error part of the error message for more details.
401 taregfix2.exe The program can only maintain up to 99 directories containing a totala.exe file. This boundary has been crossed.
402 taregfix2.exe The program switched to interactive mode because the user had to make choice between different possible TA directories and the user picked the abort option.
501 taregfix2.exe CreateFile() failed when probing existance of <absolute TA path>\<binary> Check the OS error part of the message for more details.
502 taregfix2.exe CreateFile() failed when probing existance of <absolute TA path>\<front end> Check the OS error part of the message for more details.
503 taregfix2.exe An operating system error occured in check mode (switch -c set) when the program tried to access the registry key object itself (not one of it's value strings). Check the OS error part of the message for more details.
504 taregfix2.exe An operating system error occured when trying to access one of the registry values
Guid
File
CommandLine
Path
CurrentDirectory
Launcher
and the program was in check mode. This does not cover non existant entries, those would report exit code 505 (see below). Check the OS error part of the message for more details.
505 taregfix2.exe A logical error occured when checking the entries with the -c flag. That means at least one of the entries does not exist, is not of type type string, contains an unexpected value or, in case of the value 'Launcher' exists although it shouldn't be there.
506 taregfix2.exe An operating system error occured in update mode when the program tried to create (if it did not exist before) or access the registry key object itself (not one of it's value strings). Check the OS error part of the message for more details.
507 taregfix2.exe An operating system error occured in update mode when trying to create or update one of the registry values
Guid
File
CommandLine
Path
CurrentDirectory
Launcher
Check the OS error part of the message for more details.
508 taregfix2.exe An operating system error occured in update mode when trying to delete an existing value entry for Launcher
The program attempts to remove an existing value entry for 'Launcher' if no -f switch was given and such an entry already exists. Check the OS error part of the message for more details.

Registry patcher version overview

From version 1.0.2.0 on two manifestations of the same binary file exist: taregfix2_setup.exe and taregfix2.exe. Since it's the same file just carrying a different label the MD5 fingerprint for both instances has to be the same. All registry values refered in the table below are located at the key:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectPlay\Applications\Total Annihilation
Build Date File Version MD5 fingerprint Changes / Bug Fixes
2010/12/28 1,0,4,1 8a1b893b8aaaa5035ca9268291c1ac2d
  • Fixed a bug in installer instance code that caused the program to crash when running under Windows Vista or Windows 7.
  • Binary now linked against static libraries to avoid problems with missing Microsoft DLLs.
  • Added Project files for Microsoft Visual C++ 2010.
2009/10/11 1,0,4,0 8ac20374165ba7f171710cc0a2f4a7c7
  • TA installation search process is now more error tolerant: the program will no longer abort execution when a dirctory entry can't be accessed. Instead such an entry is skipped and processing continues with the next one.
    At the end of the search process the names of the skipped entries and the reasons why they have been skipped (i.e. the operating system error encounterd when trying to access the entry's data) are displayed.
  • Source code adapted so it can be compiled using Microsoft Visual C++ 2008 Express Edition.
2003/05/11 1,0,3,1 1ebe33db59c03cb8d7fa3d3d9f5122d7
  • Call parameter processing is skipped for the installer front end manifestation now.
  • Fixed severe bug in EchoStream interface that could cause the program to hang in cdiag output.
    Althought the bug could theoretically affect any application using the cdiag stream template it seems that certain timing conditions had to be fulfilled as well to trigger it.
  • Exit codes changed due to revision of shared sources for the Installer and EchoManager classes.
2003/05/04 1,0,3,0 731b80e3ac486ee2f1c19295bd14ca89
  • The registry entries File, CommandLine and Launcher can now be customized too by using the new switches -b, -l and -f
  • Missing registry values are treated as 'logical' errors now and won't lead to an exception throw until all entries are checked.
2002/06/01 1,0,2,1 e67612122934de6a6bff60c7c47f4f04
  • When running under WindowsME taregfix2_setup.exe reported 'file does not exist' after copying the program into the windows operating system folder when no previous version was found. It turned out that WindowsME dosn't reset the GetLastError() state state before calling ReadFile() while Windows2000 does. This lead to a wrong interpretation of the current error state after leaving the copy loop. Fixed by using the API call result values of ReadFile() and WriteFile() rather than relying on GetLasterror().
2002/06/01 1,0,2,0 e5a04e3a4ec787f65c583251cc61c6b0
  • Split program into installer and run time manifestation. Actually it's the same binary file but different program names will make it act different.
  • -i and -p switches for echo server can be replaced by entries in the file taregfix2.cfg. The IP address has to be placed in dotted format in the first line of the text file, the TCP/IP port number in the second line of the file. The switches -i and -p must not appear in this file.
2002/05/31 1,0,1,0 d2fb3b463e4faedc8fb960227fd6eba5
  • Added echo output interface over TCP/IP.
  • Running instance is copying its own binary file into the windows system folder now if no binary of taregfix2 can be found there. If such a file exists and if it's regonised as an older version of taregfix2 it will become woverwritten by the running version.
2002/01/20 1,0,0,3 ee95372c0e977e9a8dc96e586b9f8d8d
  • Replaced for( ... ) loops in md5.c by memcpy() and memset() as recommended (though calculation speed of md5 fingerprints wasn't a performance issue even with the loops).
  • Removed superfluous totala.exe string from registry command line entry. The command line contains only the -c switch to supress the intro movie when TA is launched by Zone now.
  • Using more accureate term 3.1c in patch identfy string rather than the fuzzy 3.1 label which is likely to get mixed up with Boneyards patch versions.
  • Removed last wait counter output from screen before exiting the program.
2002/01/09 1,0,0,2 eb3bd6cea4b53ce23c9ba9e9e19e9d4a
  • For Windows 2000: Excluding directory System Volume Information owned by user system from directory search in order to avoid program abortion due to access denied error.
2001/12/11 1,0,0,1 e1e06b23bec89b62b5f380b40c7f91c7
  • File Version info added by providing a resource file
  • Rebuilt binary by using Microsoft Visual C++ 6.0 SP5. Since 6.0 SP5 makes the C++ style stream implementation finally work as supposed to I got rid of the C style stream read access.
2001/12/10 n/a 9136ee0b8b2809772d2f46e6df5f1990 Initial build

TA Consistency Checker

This program searches for TA installation folders and tries to identify the exact state by comparing the files in the folders against checksums generated from well defined reference installations.
But in contrast to TARegfix2 which also utilises MD5 checksums to identify TA versions not only the totala.exe file is checked but a whole set of files in the TA folder. The main purpose of the program is to check out whether the files currently residing in a particular TA folder are consistent with a given version. For example, the program may be helpful to track down the reason why the 3.1c patch refuses to install properly since you can easily check the state of the folder having problems with the patch.
For the time being there are only reference sets for the US version of the game and its expansions available.

TAConsistencyChecker is a Windows GUI application that comes without an installer. To run the program you need to download the zip archive containing the executable program and the subfolder with the reference set definitions. The zip archive is a self extracting one so after having it downloaded just click on the file to start the unpack process. I recomend to unpack the files into a dedicated subfolder (the zip archive self extractor sugggests C:\tatools\TAConsistencyChecker).
Keep in mind that the MODLOCATOR.DLL must reside in the same folder as the TAConsistencyChecker.exe in order to be able to run the program, except you decide to extract the files straight into the Windows system folder. Also, TAConsistencChecker always assumes that the reference set files are to be found in a subfolder named modinfo.So if you decide to move the files then move the subfolder to the new location as well.

The list with the version/MD5 information is located at the end of this section so you can check if you actually got the original version or a modifed one. If you have no md5 checksum test program yet you can download md5.exe. The MD5 sources are also available.

The TAConsistencyChecker source code and the MODLOCATOR source code is available for download as well. Just in case you enjoy to follow another programers's mind twisting think patterns. Or maybe you are paranoid and want to compile this stuff yourself.

TA Consistency Checker processing order

The check process is split into three parts:
  1. Load the reference set definitions from the modinfo sub folder.

    Every time you click on the 'Run Check' button the sets are re-loaded from the disk which allows to change/add sets between check runs without re-starting the application.

  2. Search for potential TA folders.

    A folder is considered a potential TA folder if a file named totala.exe can be found in it. The backup folders created by the installers of the TA expansions and folders with the system attribute set are excluded from the search process.

  3. Check the potential TA folders found against the set definitions.

    The folders are processed in the order they have been found. The processing order of the sets is determined by their size: a set with more file fingerprints is considered to be more precise than one sporting less entries, thus it's checked against a folder before all sets with less entries.
    In normal processing mode a check of a potential TA folder stops as soon as the first set in the processing order fits the files in the folder completely. See the options explanation below to learn how to change this behavior. The check of a folder ends in any case once all available sets have been exhausted.
    Once a check for a particular potential TA folder is finished an entry with the folder name will appear in the 'Installations found' list box. Selecting such an entry will update the 'Description' and 'Report' windows below, showing the detailed check results for this folder. You can select entries immediatly after they appear, the program will continue to check the remaining folders in the background.
    If you enable the option to continue checking against the remaining sets even after a folder fit the first set in the processing order then multiple entries of the same folder may appear in the 'Installations found' list box, one for each alternative set that fit the folder as well. The report for these entries is shared between them meaning that they will all show the same report that gets constantly updated with each alternative set that fit the folder too.

TA Consistency Checker interactive options

You can influence the check process by two options:
  • If an installation fit a set then check it against the remaining sets as well

    This may help if the check result comes up with an unexpected version. Sets may be defined ambiguous in way that one set is a super set of another. The program tries to avoid this kind of ambiguity by processing the larger sets before the smaller ones though.
    So a real ambiguity issue should only exist for the rare case that two set definitions with the same number of files but different file names fit both the contents of a single TA folder.
    If you enable the option described below this option becomes mandatory and gets autmatically enabled.

  • File missing in set passes check

    This may help if a folder couldn't be identfied at all. In normal check mode any file of a set that can't be found in a potential TA folder is a reason to consider the check against this set having failed. With this option enabled a file that is actually part of a set but was not found in a TA folder is considered existing with a MD5 checksum fitting the set defintion. The effect of this option is that each set defintion gets reduced to the files actually exsiting in the folder currently being checked. Since enabling this option increases the probabilty for ambiguities between set definitions considerable the option described above gets enabled with it mandatory.

TA Consistency Checker call syntax

taconsistencychecker

Since the program is supposed to run interactively it doesn't sport any command line parameters right now.

TA Consistency Checker exit codes

Because the program is an interactive GUI application it doesn't return any meaningfull exit codes yet.

TA Consistency Checker version overview

Build Date File File Version MD5 fingerprint Changes / Bug Fixes
2012/06/13 MODLOCATOR.DLL 3,0,0,0 c316b1218fd671a36f2d9096a27a1f8a
  • Transition to Visual Studio 2010 C++
  • Binary is now linked against static versions of Microsoft's CRT libraries.
  • When searching for totala.exe files any folder (and its subfolders) that can't be accessed for whatever reason is now silently excluded from the search.
2004/09/10 MODLOCATOR.DLL 2,0,0,2 2dc51f3851ef16d46b70b9d46dfa3137 Folders the Windwos account the locator DLL code is executed under has no access rights to are now silentely skipped when searching for totala.exe files.
A thank you goes to Abimilech who found this bug and was so kind to test the updated DLL version also.
2004/04/16 MODLOCATOR.DLL 2,0,0,0 2764f12bbd569ebd0e287dd33fe01dba Initial public build
2004/04/14 TAConsistencyChecker.exe 1,0,0,0 4dedb96578d489b077d017ad4ec157f6

TA DirectPlay7 port scanner

If you are stuck behind a Netowrk Address Translation (NAT)device (rotuer, proy etc.) then you may need to figure out the UDP and TCP network port number a TA instance is listening on when runing on a particular computer in order to avoid a port forwarding rule setup marathon. his is a problem with all NAT devices that allow only configuration of port forwarding rules based on a single network port number rather than by port ranges.
TA picks one UDP port and one TCP port out of the DirectPlay7 pool ranging from network port numbers 2300-2400. If you don't know which two ports are picked by TA on particular computer (which seems to depend on the installed operating system and the installed DirectX version) then you have no other choice than to configure port forwarding for the full possible range. With one rule per port you would end up with 101 rules. If the NAT device is offering a distinction for the protocols UDP and TCP as well then you would even need 202 rules.
Although it's possible to figure out the two ports with the netstat command which is shipped as part of the Microsoft operating systems I decided to provide a little program named gettalistenports.exe. The reason for that is that a lot of people seem to have problems to interpret the netstat output properly.

Important hint regarding UPnP

In case your cable/DSL modem offers a Universal Plug and Play (UPnP) port mapping option which you decided to switch on you shouldn't need to fiddle around with manual port forwarding and thus there is really no point in checking the ports a TA game instance uses on the computer it runs on. Let alone the fact that the ports gettalistenports returns in such a scenario are not the ports the TA instance will be visible under for other TA instances running on the Internet: The UPnP entity will map those computer local TA listen ports to some arbitrary choosen ports it'll then listen on on behalf of the TA instance.
So the the only way to figure out the listen ports that are actually of relevance for other Internet TA instances when the local TA instance runs in a UPnP enabled environment is to retrieve the information from the UPnP entity. Every UPnP entity should have a status overview screen in its configuration menu showing the current UPnP port mappings. Be aware though that the ports a UPnP entity chooses for the listening process on the Internet side of its network interface may fluctuate from game to game. There is no gurantee that the same port mappings used during TA game number n and game number n+1 are the same. Also don't assume that UPnP entities of another brand or even of the same brand but with a different firmware/software version will use the same mapping schema you have observed in your particular environment.

gettalistenports is an windows console application. Download the program's installer front end gettalistenports_setup.exe and run it either from within a Windows command console window or from the Windows desktop Start->Run menu or by double clicking on it in the Windows Explorer.
The installer will create a copy of the program in the windows operating system root folder using its runtime name gettalistenports.exe. If such a file already exists gettalistenports_setup.exe will overwrite that file only if the existing version can be identified as an earlier version of gettalistenports.exe. If that MD5 check against the earlier versions fails gettalistenports_setup.exe assumes that the file in the windows system folder is either no original gettalistenports.exe program at all or it assumes it's an original gettalistenports.exe file but at the same or higher version as included in gettalistenports_setup.exe and won't overwrite it.
After gettalistenports_setup.exe ran once on the computer you can call the run time program manifestation gettalistenports.exe either directly from the Windows desktop menu by using Start->Run or from any open Windows command console window.

The list with the version/MD5 information is located at the end of this section so you can check if you actually got the original version or a modifed one. If you have no md5 checksum test program yet you can download md5.exe. The MD5 sources are also available.

The gettalistenports's source code is available for download as well to allow paranoids like me to compile their own version of the program after checking it for hacks and backdoors. The source and project files are suited for use with Microsoft's Visual C++ 6.0 or higher.

TA DirectPlay7 port scanner call syntax

gettalistenports

In the current version the program doesn't require any parameters or switches. You should make sure that TA is running in host mode already before you launch gettalistenports though. Host mode means you are at the battle room screen waiting for someone to join. It's not necessary to get someone into the game at this point, just being as host in he battleroom will do the job.

TA DirectPlay7 port scanner exit codes

Some of these return codes are used by both manifestations of gettalistenports (the installer gettalistenports_setup.exe and the run time instance gettalistenports.exe) some are only used by one of the two. The 'Used By' column will state which of the manifestations may returns which value.
The documented exit codes are only valid for the latest version. Previous versions may return different values.
Value Used By Meaning
0 both No error occured.
1 gettalistenports_setup.exe The operating system call GetWindowsDirectory() failed with an OS error. The program wasn't able to retrieve the path of the operating system software root directory. Check the OS error part of the message for more details.
2 gettalistenports_setup.exe The operating system call CreateFile() failed with an OS error. The program couldn't open the source file gettalistenports_setup.exe when trying to create a copy of that file with the name gettalistenports.exe in the Windows operating system root folder. Check the OS error part of the message for more details.
3 gettalistenports_setup.exe The operating system call CreateFile() failed with an OS error. The program couldn't open the destination file gettalistenports.exe when trying to create a copy of gettalistenports_setup.exe in the windows operating system root folder. Check the OS error part of the message for more details.
4 gettalistenports_setup.exe One of the operating system calls ReadFile() or WriteFile() failed with an OS error. gettalistenports_setup.exe could open the source and destination file but wasn't able to copy the complete file over to the windows operating system root folder. Check the OS error part of the message for more details.
101 both The operating system call GetModuleFileName() failed with an OS error. The program wasn't able to retrieve the location from where it was launched. Check the OS error part of the message for more details.
201 gettalistenports.exe An operating system error occured when gettalistenports prepared itself for access to the TCP/IP interface on the local computer. The error indicates a problem with your local operating system network installation or that gettalistenports requested support for network functions which the socket interface on the local computer can't provide. Your computer may not support such a high level of Windows socket support (especially on Windows95) and I may have to lower the minimum version number gettalistenports requests. Send me an email to tcbw@tcbw.net in case the OS error part of the message points into this direction.
202 gettalistenports.exe While probing the DirectPlay7 ports the operating system call socket() failed with an OS error. This may indicate a problem with your network installation on the local computer. Check the OS error part of the message for more details.
203 gettalistenports.exe While probing the DirectPlay7 ports the operating system call bind() failed with an OS error other than WSAEADDRINUSE. This may indicate a problem with your network installation on the local computer. Check the OS error part of the message for more details.
204 gettalistenports.exe More than one TCP port in the range of 2300-2400 is bound by an application thus it's not possible to reliably identify the DirectPlay7 TCP port for TA. Make sure no other application making use of the DirectPlay7 interface is running except TA before launching gettalistenports.
205 gettalistenports.exe More than one UDP port in the range of 2300-2400 is bound by an application thus it's not possible to reliably identify the DirectPlay7 UDP port for TA. Make sure no other application making use of the DirectPlay7 interface is running except TA before launching gettalistenports.
206 gettalistenports.exe None or only one UDP/TCP port was bound in the range of 2300-2400. You may have forgotten to bring TA in host mode before running gettalistenports.

TA DirectPlay7 port scanner version overview

Build Date File Version MD5 fingerprint Changes / Bug Fixes
2003/05/12 1,0,0,1 f196c43979bd78b6713373e233bece0a
  • Call parameter processing is skipped for the installer front end manifestation now (in case parameters are actually needed in future releases).
  • Fixed severe bug in EchoStream interface that could cause the program to hang in cdiag output.
    Althought the bug could theoretically affect any application using the cdiag stream template it seems that certain timing conditions had to be fulfilled as well to trigger it.
  • Exit codes changed due to revision of shared sources for the Installer and EchoManager classes.
2003/04/21 1,0,0,0 eb072710362405de99f0990b35c3e504 Initial build

TA Reporter DLL resolve IP to hostname fix

TA provides a DLL hook in order to report in game statistics (energy/metal production, end game results like who won and who lost etc.) to external applications like the game service clients or servers. Basically anyone can write such a reporter DLL as long they know the name of the DLL TA tries to load for reporting purpose and the names of the callback functions TA uses for reporting. For the time being only the community operated game service PhoeniX WorkX seems to make use of this feature.
One problem can arise when playing on PhoeniX WorkX: At least the current build of the reporter DLL tries to contact the game service client by using a local network connection. During the connection build up process the reporter DLL tries to get a hostname resolution for the IP address 127.0.0.1 (which is just the local loop back address normally used for establishing local network connections on the same machine) by calling a certain Windows API call. This call will fail with an error if neither the computer's local configuration nor the network environment (DNS servers) it's integrated into provides such a resolution.

You can use represfix.exe to overcome this problem or just to verify if it exists at all. represfix is a windows console application. Just download it and start it either from within a Windows command console window or from Start->Run menu or by double clicking on it in the Windows Explorer (you can't provide command line switches then though).

As usual, I provided a list with the version/MD5 information at the end of this section in order to allow you to check if you actually got the original version or a modifed one. If you have no md5 checksum test program yet you can download md5.exe. The MD5 sources are also available.

I made represfix's source code available for download so paranoids like me can compile their own version of the program after checking it for hacks and backdoors. The source and project files are suited for use with Microsoft's Visual C++ 6.0 or higher.

TA Reporter DLL resolve fix call syntax

represfix [-c] [-n]

The -c switch causes represfix just to check if it's possible to resolve IP 127.0.0.1 to hostname. If the resolution fails no action to fix the problem will be taken.

Setting the -n switch avoids the 10 second delay before exiting the program. The dealy is active by default in order to give the user enough time to read error or success messages.

If the switch -c is omitted represfix will try to solve the problem by placing an entry for IP 127.0.0.1 in the hosts file on the local computer. The location of the hosts file depends on the operating system. For the NT based family (NT, Windows2000, XP) it's %SystemRoot%\system32\drivers\etc\hosts and for the legacy branch (Windows95, Windows98, windowsME) it's %winbootdir%\hosts. represfix will figure out the operating system version automatically and build an according file path. If the hosts file dosn't exist yet represfix will create it and add the required entry. If it already exists the required entry will just be added at the end of the file. After putting the entry into the hosts file a second resolve request will be issued in order to check whether the problem has been fixed or not.

TA Reporter DLL resolve fix exit codes

Value Meaning
0 No error occured.
1 The program was called by using a wrong syntax. Switches are only allowed to occure once.
2 The operating system was not recognised. represfix only supports WindowsNT, Windows2000, WindowsXP, Windows95, Windows98 and windowsME.
3 API call GetWindowsSystemDirectory() failed. Check the OS error part of the error message for possible reasons.
4 API call GetVersionEx() failed. Check the OS error part of the error message for possible reasons.
5 API call WriteFile() failed. Check the OS error part of the error message for possible reasons.
6 API call SetFilePointer() failed. Check the OS error part of the error message for possible reasons.
7 API call CreateFiler() failed. Check the OS error part of the error message for possible reasons. Note this error may occure with an already existing hosts file too since represfix uses a special mode of CreateFile() that will just open the file rather than creating it if it already exists.
8 Resolution of IP 127.0.0.1 failed with WSANO_DATA even after successfully adding an entry for IP 127.0.0.1 to the hosts file. This indicates that the file may been placed into the wrong directory by represfix. Contact me at tcbw@tcbw.net for further investigation.
9 API call gehostbyaddr() failed with an error unlike WSANO_DATA. This means the table holding the resolution entries could not be accessed at all rather than the requested entry just not existing in the table.
10 API call WSAStartup() failed with an error. represfix is requesting a minimum of windows socket version 2.2 function call support when initializing the network access. Your computer may not support such a high version of the winsocket implementation (especially on windows95) and I may have to lower the minimum version number represfix is requesting. Send me an email to tcbw@tcbw.net in case this error occured and I'll try to provide a solution.

TA Reporter DLL resolve fix version overview

Build Date File Version MD5 fingerprint Changes / Bug Fixes
2002/03/24 1,0,0,3 9aa2915203d5080194500dbbd6f0d603
  • Double use of exit code 2 corrected. The documented exit code table above is not valid before this version.
2002/03/23 1,0,0,2 d78f44e4be9c0277fcf8628410a592eb
  • Tell WSANO_DATA error apart from other errors when gethostbyaddr() fails in order to be able to distinguish between a missing entry in the resolution table and a severe operating system error.
2002/03/23 1,0,0,1 3843119e0c23279fca05f4cbfdfaed71 Initial build

EchoStream server

EchoServer allows to echo the output of a program runnig on another computer. The remote program has to povide the TCP/IP interface to connect the echo server. The input has to be a simple, non wide character byte stream (in Intel byte order) which is just echoed to the server's console windows as it is.
This program provides all echo server funtionality needed at the remote end when running taregfix2 version 1.0.1.0 or higher in echo mode. If you want to use taregfix2 as a diagnostic tool for verifying TA versions and installations on remote computers you need this simple echo server to get access to the remote screen output.
Download the program's installer front end EchoServer_setup.exe and run it once in order to install the runtime manifestation EchoServer.exe in the Windows system folder.

You can verify the origin of this program by calculating it's MD5 fingerprint with a MD5 calculator. Any checksum not appearing on the list with valid MD5 fingerprints means the file has not been compiled by me but someone else and may contain changes that are not documented here. If you think that this MD5 program may already contain backdoor hacks itself then get the MD5 sources and compile it yourself.

Since programs providing network connections between two computers always have the potential to be abused for unwanted remote access and manipulation it's even more important than for any other type of program to provide the EchoStream server source code. Compile your own version of the program after checking it for hacks and backdoors if you don't trust the compiled versions. The source and project files are suited for use with Microsoft's Visual C++ 6.0 or higher.

EchoStream server call syntax

EchoServer -p <port number> [-a <peer IP allowed>]

-p is the TCP listen port number the echo server will listen on for conenction requests of remote output stream sources. Basically you can pick any <port number> that is not already bound by another apllication running on the echo server computer. If you pick an already bound port you will get an according error message when EchoServer fails to bind that port.

-a is an optional parameter that allows to restrict the access to the echo server to a single peer IP. When set EchoServer checks the IP address of the remote computer the first time it connects. If the peer IP differs from <peer IP allowed> then the server closes its end of the connection immediatly without reading any data from the connection.

Keep in mind that you have to forward connection requests on <port number> to the computer of the inner network you run EchoServer on if you are behind a router. You have to open any firewall between the echo server computer and the remote client for <port number> as well otherwise no connection will be possible.

You can terminate EchoServer by closing the console window or hitting the CTRL-C key kombination.

EchoStream server exit codes

Some of these return codes are used by both manifestations of EchoServer (the installer EchoServer_setup.exe and the run time instance EchoServer.exe) some are only used by one of the two. The 'Used By' column states which of the manifestations returns which value.
The documented exit codes are only valid for the latest version. Earlier versions may have used different exit codes.
Value Used by Meaning
0 both No error occured.
1 EchoServer_setup.exe Windows API call GetSystemWindowsDirectory() failed. The program couldn't identify the Windows operating system root directory. Check the OS error part of the mesage for more details.
2 EchoServer_setup.exe Windows API call CreateFile() failed. The program couldn't open the source file (EchoServer_setup.exe). Check the OS error part of the message for more details.
3 EchoServer_setup.exe Windows API call CreateFile() failed. The program couldn't create or open the target file (EchoServer.exe) in the Windows operating system root folder. Check the OS error part of the message for more details.
4 EchoServer_setup.exe Windows API call ReadFile() or WriteFile() failed. The program could open the source file and could create or open the target file but an error occured in the middle of the copy process. Check the OS error part of the message for more details.
101 both Windows API call GetModuleFileName() failed. The program could not determine its launch location. Check the OS error part of the message for more details.
102 EchoServer.exe The program was called by using an incorrect syntax.
201 EchoServer.exe Startup of TCP/IP network interface failed. The echo server is requesting a minimum of windows socket version 2.2 function call support when initializing the network access. Your computer may not support such a high version of the winsocket implementation with old Microsoft operating systems like Windows95. I either have to lower the minimum version number which is requested or the problem is related to a problem with your network installation on this computer. Send me an email with the exact error message to tcbw@tcbw.net in case this error occured.
202 EchoServer.exe Windows API call inet_addr() failed. The parameter -a was used and the IP address character string given couldn't be converted into a valid IPv4 address.
203 EchoServer.exe Windows API call socket() failed. This is very likely to be caused by a problem with the state of the network interface on your computer. Check the OS error part of the mesage for more details.
204 EchoServer.exe Windows API call bind() failed. Check the OS error part of the message. You probably tried to use a <TCP port number> which os already in use by another program on this computer.
205 EchoServer.exe Windows API call listen() failed. Check the OS error part of the message for possible reasons.
206 EchoServer.exe Windows API call accept() failed. Check the OS error part of the message for possible reasons.
207 EchoServer.exe Windows API call asetsockopt() failed. Check the OS error part of the message for possible reasons.

EchoStream server version overview

Build Date File Version MD5 fingerprint Changes / Bug Fixes
2003/05/11 1,0,1,0 e9212dfeb0c8385a29527992f9be538f
  • Fixed severe bug in EchoStream interface that could cause the program to hang in cdiag output.
    Althought the bug could theoretically affect any application using the cdiag stream template it seems that certain timing conditions had to be fulfilled as well to trigger it.
  • Disabled delayed TCP ACK since except pure ACK packets no data will ever be send to the peer. This increases the output speed on both ends.
  • Installer support added, two mainfestations of the same program exist from now on: The installer front end EchoServer_setup.exe and the runtime version EchoServer.exe
  • Exit codes changed due to revision of shared sources for the Installer and EchoManager classes.
  • Program now works with 'real' command line parameters rather than relying on fixed positions for the values.
2002/05/31 1,0,0,0 5eb26b89eaff7a7d6d4906c580a50d01 Initial build

Page last updated 2012-06-13 by tcbw@tcbw.net