20090707 Upgraded Engine to SNFMulti V3.0.8 (contains minor bug fixes).

20090704 Getting closer - new DLL, new features, a little polish.

NOTE: Beginning with this update this ChangeLog will only list hilights.
For more details check the logs at https://svn.microneil.com/websvn/

* snfmulti.dll is now at version 3.0, engine 3.0.7

* Used newer MinGW with improved optimizations

* Using newest SNF engine with several minor bug fixes

* Added startupSNFAuthenticated() so OEMs can protect SNF license info

* Added getIPReputation() to aid in converting GBUdb stats to weights

* Added C++ sample code

* Reorganized SNFMulti code base.

20090317 Work in progess toward SDK release.

* Included latest getRulebase.cmd and curl.exe

* Included SNFClient_readme.txt and SNFServer_readme.txt

* Included / updated SNFClient, and snf_engine.xml

* Added ReadMe.html - includes API documentation

* Added missing snf_ERROR_EXCEPTION to snfmultidll.h file

* Removed redundant #define EXP __declspec(dllexport) from snfmultidll.cpp

20080723 Version 2.9r3 - Engine 3.0

* Compiled DLL using new SNF engine V3.0.

* Added snf_ERROR_EXCEPTION result (-3) to show when an exception occurred
during a call that could not be expressed with one of the normal SNF result
codes.

* Wraped DLLMain() functions in a try/catch to eat any exceptions. If an
exception occurs the function will return false;

* Added pre-allocation to result cache buffers to minimize heap allocation
during operations. The pre-allocated amount should be sufficient for all
cases. If it is not then the string objects will allocate more as needed.

* Changed snf_ERROR_UNKNOWN to snf_ERROR_EXCEPTION for startupSNF() and
shutdownSNF().

* Wrapped testIP() in try/catch - now returns snf_ERROR_EXCEPTION if an
exception occurs.

* Wrapped getScanXHeaders() in try/catch - now returns snf_ERROR_EXCEPTION 
if an exception occurs.

* Wrapped getScanXMLLog() in try/catch - now returns snf_ERROR_EXCEPTION 
if an exception occurs.

* Wrapped getScanClassicLog() in try/catch - now returns snf_ERROR_EXCEPTION 
if an exception occurs.

* Wrapped closeScan() in try/catch - now returns snf_ERROR_EXCEPTION 
if an exception occurs.