2009-05-24  Alban Deniz  <adeniz@skidmark.localdomain>

	* Makefile.am (noinst_HEADERS): Removed ProductionQueue.hpp from
	user tarball.

	* SNFMilter.hpp: Do not include ProductionQueue.hpp; the
	definition was moved to threading.hpp.

2009-01-31  Alban Deniz  <adeniz@skidmark.localdomain>

	* main.cpp (main): Replaced PACKAGE with SNFMilter.  Added
	PACKAGE_VERSION to SNF_MILTER_VERSION.

2009-01-17  Alban Deniz  <adeniz@skidmark.localdomain>

	* SNFMilter.cpp: Cast c string constants to (char *) to avoid
	warnings about deprecated conversions.

2009-01-15  Alban Deniz  <adeniz@skidmark.localdomain>

	* SNFMilter.cpp (SNFMilterEngine::readConfiguration): Read
	<nonzero> element.
	(SNFMilterEngine::scanMessage): Update to return NonZeroAction as
	appropriate.

	* SNFMilter.hpp (class SNFMilterEngine): Added
	SNFMilterEngine::NonZeroAction.

2009-01-14  Alban Deniz  <adeniz@skidmark.localdomain>

	* SNFMilter.cpp (SNFMilterEngine::SNFMilterEngine): Removed
	initialization of ResultCodesCount (it's initialized by
	readConfiguration().

	* SNFMilter.hpp: Added NoAction and NoActionMNemonic.

	* SNFMilter.cpp (SNFMilterEngine::readConfiguration): Added
	.Mnemonic() to action attribute of <result> element.  This reads
	the action values from the configuration file.

2009-01-13  Alban Deniz  <adeniz@skidmark.localdomain>

	* SNFMilter.cpp: Output debug message when quarantining.
	(SNFMilterEngine::scanIP): Throw exception if myEngine is 0.
	(SNFMilterEngine::scanMessage): Throw exception if myEngine is 0.

2009-01-10  Alban Deniz  <adeniz@skidmark.localdomain>

	* SNFMilter.cpp: Removed incorrect output of X-Headers to cout.

2009-01-06  Alban Deniz  <adeniz@orkey.localdomain>

	* Makefile.am: Moved code for SNFMilter.xml, identity.xml, and
	GBUdbIgnorList to config_files/Makefile.am.

2008-12-02  Alban Deniz  <adeniz@skidmark.localdomain>

	* main.cpp: Added thread to catch SIGTERM.

	* SNFMilter.hpp: Implemented SNFMilterContextPool::allUnused().

	* SNFMilter.cpp (runLibMilter): On return from smfi_main(), wait
	for all contexts to become free before returning.
	(SNFMilterContextPool::allUnused): Implemented method.

	* main.cpp (main): Add ShutdownWatcher to process XCI shutdown
	command.  Responds with message with code 1.

2008-11-24  Alban Deniz  <adeniz@skidmark.localdomain>

	* SNFMilter.cpp: Conditionally compile mlfi_data(),
	mlfi_negotiate(), and mlfi_unknown().  Compiled if SMFI_VERSION >
	3.  Purpose is to be able to compile with older libmilter
	libraries that did not have these functions.

2008-11-21  Alban Deniz  <adeniz@skidmark.localdomain>

	* SNFMilter.cpp (SNFMilterEngine::readConfiguration): Save the
	latest configuration.
	(logError): Pass parameters by reference.

	* Makefile.am (SNFMilter.xml.sample): Generate from
	SNFMilter.xml.sample.in.

2008-11-15  Alban Deniz  <adeniz@skidmark.localdomain>

	* Makefile.am: Install sample configuration files in
	/usr/local/share/examples/SNFMilter.

	* SNFMilter.hpp: Add PrependLocalReceivedHeader boolean flag.

	* SNFMilter.cpp: Add PrependLocalReceivedHeader boolean flag.

	* Makefile.am: Install configuration files in
	@sysconfdir@/@PACKAGE_NAME@ (e.g. /usr/local/etc/SNFMilter).

2008-11-14  Alban Deniz  <adeniz@skidmark.localdomain>

	* SNFMilter.hpp: Obtain communication socket info from XML file.

	* SNFMilter.cpp: Obtain communication socket info from XML file.

2008-11-07  Alban Deniz  <adeniz@skidmark.localdomain>

	* SNFMilter.hpp: Remove name of group for named pipe.

	* SNFMilter.cpp (runLibMilter): Removed code to change group of
	named pipe.

2008-11-06  Alban Deniz  <adeniz@skidmark.localdomain>

	* SNFMilter.hpp: Changed MilterConnPath to /tmp/SNFMilterSocket.
	Changed the group of pipe fo "snfmilter".

	* Makefile.am: Added SNFMilterClient, SNFMilter2Check,
	SNFMilter.xml.sample, and identity.xml.sample.

2008-11-05  Alban Deniz  <adeniz@skidmark.localdomain>

	* Makefile.am (libexec_PROGRAMS): Changed SNFMilter destination
	from bin to libexec.

2008-11-04  Alban Deniz  <adeniz@skidmark.localdomain>

	* Makefile.am (SNF_Service_hdr): Added snf_match.h to the
	distribution.

2008-10-25  root  <adeniz@skidmark.localdomain>

	* SNFMilter.cpp: Added InfoCode when invoking logInfo().

2008-10-20  Alban Deniz  <adeniz@skidmark.localdomain>

	* SNFMilter.cpp (runLibMilter): Create named pipe, and set group
	to GroupName, and permissions to 660.

	* SNFMilter.hpp: Renamed milterConnSpec to milterConnPath.  Added
	Groupname.

	* SNFMilter.cpp ("C"): Obtain connection context only in
	smfi_negotiate().

2008-10-17  Alban Deniz  <adeniz@skidmark.localdomain>

	* SNFMilter.cpp: Added X-header processing.  Added
	getContextFromCtx().  Replace LocalReceivedHeader data member with
	getLocalReceivedHeader() method.  Prepend local received header to
	the message to be scanned in mlfi_eom.

2008-10-12  Alban Deniz  <adeniz@skidmark.localdomain>

	* SNFMilter.hpp: Completed the callbacks.

	* SNFMilter.cpp: Completed the callbacks.

	* main.cpp (main): Added DebugMode flag.  If argv[0] contains
	"Debug" or "debug", then debug mode is enabled.

2008-10-11  Alban Deniz  <adeniz@skidmark.localdomain>

	* SNFMilter.hpp (class SNFMilterContextPool): Add logThisError and
	logThisInfo to SNFMilterContextPool.

2008-10-09  Alban Deniz  <adeniz@skidmark.localdomain>

	* main.cpp (main): Use SNFMilterContexts instead of
	SNFMilterEngines.

	* SNFMilter.hpp: Refactor SNFMilterEnginePool to be
	SNFMilterContextPool.  Implement SNFMilterContext.

	* SNFMilter.cpp: Added DEBUG_SNFMILTER to send debug messages to
	cerr and log to mail.debug.  Refactor SNFMilterEnginePool to be
	SNFMilterContextPool.  Implement mlfi_connect and mlfi_close.

2008-10-03  Alban Deniz  <adeniz@skidmark.localdomain>

	* SNFMilter.hpp: Added milterPipeName.

2008-10-02  Alban Deniz  <adeniz@skidmark.localdomain>

	* main.cpp: Included config.h for version number.

Copyright (C) 2009 ARM Research Labs, LLC.

See www.armresearch.com for the copyright terms.