2009-10-13  Kouhei Sutou  <kou@clear-code.com>

	* configure.ac: fix a typo.

	* milter-manager.spec.in: add 1.4.0-0 entry.

	* doc/install-to-centos.rd*, doc/install-to-freebsd.rd*: 1.3.1 -> 1.4.0.

2009-10-11  Kouhei Sutou  <kou@cozmixng.org>

	* NEWS: add a new bug fix entry showed at the below ChangeLog
	entry.

	* milter/manager/milter-manager-children.c: log add header
	statistics on evaluation mode.

2009-10-10  Kouhei Sutou  <kou@cozmixng.org>

	* configure.ac: 1.3.2 -> 1.4.0.

	* NEWS*: add an entry for 1.4.0.

	* TODO: remove: [1.4.0] add install documents for Debian.

	* doc/users*: add.

	* doc/reference/Makefile.am: add documents for Debian.

	* doc/reference/milter-manager-docs.sgml: add documents for Debian.

	* doc/upgrade-*-debian*: add upgrade documents on Debian.

	* doc/upgrade-*.rd: write you.
	* doc/upgrade-*.rd.ja: fix typos.

	* doc/, html/: 1.2.0 -> 1.4.0.

	* doc/install-*, doc/upgrade-*: update versions.

	* doc/install-options-to-debian.rd*: add install documents for
	optinal packages on Debian.

	* data/defaults/debian.conf, data/defaults/freebsd.conf: enables
	OpenDKIM detection on Debian and FreeBSD.

	* binding/ruby/lib/milter/manager/detector.rb,
	binding/ruby/lib/milter/manager/freebsd-rc-detector.rb,
	binding/ruby/lib/milter/manager/pkgsrc-rc-detector.rb,
	binding/ruby/lib/milter/manager/rcng-detector.rb,
	binding/ruby/test/manager/test-freebsd-rc-detector.rb: support
	OpenDKIM detection on FreeBSD.

2009-10-09  Kouhei Sutou  <kou@cozmixng.org>

	* TODO: add: [1.5.x] output CVS for statistics.

2009-10-05  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/lib/milter/manager/opendkim-config-parser.rb: add.

	* binding/ruby/lib/milter/manager/detector.rb,
	binding/ruby/lib/milter/manager/debian-init-detector.rb,
	binding/ruby/test/manager/test-debian-init-detector.rb: support
	OpenDKIM on Debian.

	* doc/install-to-ubuntu.rd*: fix typos.

	* doc/install-to-debian.rd*: add a document to install milter
	manager to Debian.

	* doc/install-to-ubuntu.rd*: don't need to create home directory
	manually.

2009-10-05  Kouhei Sutou  <kou@clear-code.com>

	* TODO: add: [1.4.0] add install documents for Debian.

2009-09-23  Kouhei Sutou  <kou@cozmixng.org>

	* configure.ac, Makefile.am: follow the recent misc/release.rb changes.

2009-09-16  Kouhei Sutou  <kou@clear-code.com>

	* configure.ac: 1.3.1 -> 1.3.2.

	* admin/Makefile.am: add missing migration file.

	* doc/install.rd*: Rails 2.3.2 -> 2.3.4.

2009-09-15  Kouhei Sutou  <kou@clear-code.com>

	* NEWS*, doc/, html/, milter-manager.spec.in: 1.3.1 will be
	released tomorrow.

	* admin/: support Rails 2.3.4.

	* TODO: remove: [1.3.1] support Rails 2.3.4.

2009-09-14  Kouhei Sutou  <kou@clear-code.com>

	* TODO:
	- add: [1.3.1] support Rails 2.3.4.
	- remove: [1.3.1] progress in end-of-message with Postfix causes
	problem? sid-milter sends progress when DNS lookup is failed.

	* NEWS*: add 1.3.1 entry.

	* doc/configuration.rd*: add 'Since 1.3.1' marks.

2009-09-13  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/test/manager/test-freebsd-rc-detector.rb: use
	empty configuration file for testing.

	* binding/ruby/lib/milter/manager/: apply milter-greylist tarpit
	configuration detection to all platform.

	* data/defaults/*.conf: apply milter-greylist at the first.

	* bindings/ruby/lib/milter/manager/milter-greylist-socket-detector.rb:
	rename to ...
	* bindings/ruby/lib/milter/manager/milter-greylist-config-parser.rb:
	... this.

	* bindings/ruby/lib/milter/manager/redhat-*: follow the above changes.

	* bindings/ruby/lib/milter/manager/freebsd-rc-detector.rb,
	binding/ruby/test/manager/test-freebsd-rc-detector.rb: detect
	tarpit time and apply them to the default writing_timeout and
	reading_timeout.

2009-09-10  Kouhei Sutou  <kou@clear-code.com>

	* milter/core.h,
	milter/core/milter-message-result.[ch]: add MilterMessageResult.

	* milter/server/milter-server-context.[ch],
	test/server/test-server-context-command.c: emit message processed
	signal. (work in progress. need more test.)

2009-09-02  Kouhei Sutou  <kou@clear-code.com>

	* milter/core/milter-message-result.[ch],
	test/core/test-message-result.c: add MilterMessageResult for logging.

2009-09-01  Kouhei Sutou  <kou@clear-code.com>

	* binding/ruby/lib/milter/Makefile.am
	(dist_binding_lib_milter_DATA): add missing client.rb.

	* binding/ruby/lib/milter/client.rb: a convenience class to make a
	milter by Ruby.

	* binding/ruby/src/toolkit/rb-milter-server-context.c:
	move signal converters to ...
	* binding/ruby/src/toolkit/rb-milter-core-private.[ch]: ... here.

	* binding/ruby/src/toolkit/rb-milter-client-context.c: use shared
	signal converters.

2009-08-31  Kouhei Sutou  <kou@clear-code.com>

	* test/manager/test-manager.c: pass with GLib 2.21.0.

	* test/fixtures/leader/add-header-evaluation-discard.{txt,conf},
	test/manager/test-leader.c: add a test for evaluation mode,
	message modification signals and discard.

	* test/fixtures/leader/add-header-evaluation-reject.{txt,conf},
	test/manager/test-leader.c: add a test for evaluation mode,
	message modification signals and reject.

	* milter/manager/milter-manager-children.c: fix a bug that message
	modification signals are ignored when the last child is evaluation
	mode and returns temporary failure, reject or discard.

	* README: add Syunsuke Komma. Thanks!!!

	* binding/ruby/lib/milter/manager/,
	binding/ruby/test/manager/: consider Example in clamav-milter config.

	* binding/ruby/lib/milter/manager/,
	binding/ruby/test/manager/: ClamAVMilterSocketDetector ->
	ClamAVMilterConfigParser.

	* binding/ruby/lib/milter/manager/detector.rb,
	binding/ruby/lib/milter/manager/redhat-init-detector.rb,
	binding/ruby/test/manager/test-redhat-init-detector.rb: support
	EPEL style clamav-milter.
	Reported by Syunsuke Komma. Thanks!!!

2009-08-28  Kouhei Sutou  <kou@clear-code.com>

	* test/fixtures/leader/add-header-evaluation-temporary-failure.{txt,conf},
	test/manager/test-leader.c: add a test for a bug that add-header
	is ignored by evaluation mode milter's temporary failure.  This is
	not fixed yet...

2009-08-27  Kouhei Sutou  <kou@clear-code.com>

	* NEWS.ja: fix a typo. I'm so sorry...

2009-08-26  Kouhei Sutou  <kou@clear-code.com>

	* admin/: support evaluation-mode changes.

	* binding/ruby/lib/milter/manager.rb: support evaluation-mode.

	* admin/: accept evaluation-mode value.

	* admin/config/environment.rb: Rails: 2.3.2 -> 2.3.3.

	* admin/config/environment.rb: jeremyevans-exception_notification:
	1.0.20081208 -> 1.0.20090728.

2009-08-26  Yuto Hayamizu  <y.hayamizu@gmail.com>

	* tmp/send-mail.rb, tmp/milter-progress.rb,
	tmp/milter-add-header.rb: add scripts for reproducing the bug (actions on end-of-message are ignored)

	* milter/manager/milter-manager-children.c (cb_progress): add debug print.

	* binding/ruby/test/toolkit/test-client.rb: add test of (get|set)_connection_spec.

	* binding/ruby/test/toolkit/test-client-context.rb (TestClientContext#test_set_reply): add test of set_reply.

	* binding/ruby/src/toolkit/rb-milter-client.c (client_get_connection_spec,
	client_set_connection_spec): add bindings of
	milter_client_(get|set)_connection_spec.

	* binding/ruby/src/toolkit/rb-milter-client-context.c (set_reply, format_reply): add bindings of milter_client_context_(set_reply|format_reply).

	* test/client/test-client.c (test_connection_spec): test of
	milter_client_get_connection_spec.

	* milter/client/milter-client.c	(milter_client_get_connection_spec): add.

	* binding/ruby/test/toolkit/test-option.rb: add test of add_action.

	* binding/ruby/test/toolkit/test-client-context.rb: add test of add_header.

	* binding/ruby/src/toolkit/rb-milter-option.c: add add_action method.

	* binding/ruby/src/toolkit/rb-milter-client-context.c: add add_header method.

	* milter/client/milter-client-context.c: add OPTION property to MilterClientContext

	* milter/client/milter-client-context.c: add STATE property to MilterClientContext

	* binding/ruby/src/toolkit/rb-milter-client-context.c (progress): add

	* binding/ruby/test/toolkit/test-client-context.rb (TestClientContext#test_progress): add

	* milter/manager/milter-manager-leader.c (cb_add_header,
	cb_insert_header, cb_change_header): add milter_statistic of sessions

	* milter/manager/milter-manager-children.c (is_end_of_message_state)
	(is_evaluation_mode): removed use of g_string_append_vprintf, which requires glib >= 2.14

	* test/manager/test-leader.c (cut_startup, cut_teardown): renamed from startup, teardown

	* test/manager/test-children.c (cut_startup, cut_teardown): renamed from startup, teardown

	* milter/manager/milter-manager-main.c (update_max_file_descriptors): cast rlimit_max to gint64

2009-08-20  Kouhei Sutou  <kou@clear-code.com>

	* TODO: add an investigation.

2009-08-16  Kouhei Sutou  <kou@clear-code.com>

	* milter/manager/milter-manager-children.c: cleanup.

	* milter/manager/milter-manager-children.c,
	test/fixtures/leader/replace-body-evaluation.{txt,conf},
	test/manager/test-leader.c: ignore replace-body on evaluation mode.

	* milter/manager/milter-manager-children.c,
	test/fixtures/leader/delete-recipient-evaluation.{txt,conf},
	test/manager/test-leader.c: ignore delete-recipient on evaluation mode.

	* milter/manager/milter-manager-children.c,
	test/fixtures/leader/add-recipient-evaluation.{txt,conf},
	test/manager/test-leader.c: ignore add-recipient on evaluation mode.

	* milter/manager/milter-manager-children.c: support additional
	information on invalid state.

	* milter/manager/milter-manager-children.c: check end-of-message
	state.

	* milter/manager/milter-manager-children.c,
	test/fixtures/leader/change-from-evaluation.{txt,conf},
	test/manager/test-leader.c: ignore change-from on evaluation mode.

	* milter/manager/milter-manager-children.c,
	test/fixtures/leader/delete-header-evaluation.{txt,conf},
	test/manager/test-leader.c: ignore delete-header on evaluation mode.

	* milter/manager/milter-manager-children.c,
	test/fixtures/leader/change-header-evaluation.{txt,conf},
	test/manager/test-leader.c: ignore change-header on evaluation mode.

2009-08-14  Kouhei Sutou  <kou@clear-code.com>

	* milter/manager/milter-manager-children.c,
	test/fixtures/leader/insert-header-evaluation.{txt,conf},
	test/manager/test-leader.c: ignore insert-header on evaluation mode.

	* milter/manager/milter-manager-children.c,
	test/fixtures/leader/quarantine-evaluation.{txt,conf},
	test/manager/test-leader.c: ignore quarantine on evaluation mode.

	* milter/manager/milter-manager-children.c,
	test/fixtures/leader/add-header-evaluation.{txt,conf},
	test/manager/test-leader.c: ignore add-header on evaluation mode.

	* TODO: add a specification draft for logging signal.

	* milter/manager/milter-manager-main.c: use G_GINT64_FORMAT for
	32bit environment.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-configuration-loader.rb,
	binding/ruby/test/manager/test-configuration.rb,
	doc/configuration.rd*: add manager.max_file_descriptors
	configuration item.

	* TODO: remove: [1.3.0] support a configration for max file descriptor
	number that can be opened. (ref. setrlimit() and RLIMIT_NOFILE)

	* milter/manager/milter-manager-main.c: set limit for max number
	of file descriptor.

	* milter/manager/milter-manager-configuration.[ch],
	test/manager/test-configuration.c: add max file descriptors
	configuration item.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/src/toolkit/rb-milter-client.c,
	binding/ruby/test/manager/test-configuration-loader.rb,
	binding/ruby/test/manager/test-configuration.rb,
	doc/configuration.rd*: add manager.max_connections parameter.

	* TODO: remove: [1.3.0] support a configuration for max connections.

	* milter/manager/milter-manager.c: bind max connections to
	configuration item.

	* milter/manager/milter-manager-configuration.[ch],
	test/manager/test-configuration.c: add max connections
	configuration item.

	* ./: reputation -> evaluation.

2009-08-13  Kouhei Sutou  <kou@clear-code.com>

	* TODO:
	- [1.3.0] support max connections by MilterClient.
	+ [1.3.0] support a configuration for max connections.

	* milter/client.h, milter/client/milter-client.c: add
	max_connections parameters. It restricts max number of concurrent
	connections.

	* tool/milter-test-client.c,
	doc/milter-test-client.rd*:
	- verbose option really verbose.
	- add --syslog option for supporting Syslog.

	* TOOD: remove: milter-manager-log-analyzer: <X-Greylist>=<Sender
	is SPF-compliant ...> should be counted as SPF pass.

	* tool/milter-manager-log-analyzer,
	test/tool/Makefile.am,
	test/tool/test-report-graph-generator.rb: find spf-pass result
	from X-Greylist.

	* TODO: remove: child milter: reputation mode.

	* milter/manager/milter-manager-children.c,
	test/manager/test-leader.c,
	test/fixtures/leader/envelope-from-temporary-discard.{txt,conf}: treat
	discard as accept for reputation mode milter.

	* milter/manager/milter-manager-children.c,
	test/manager/test-leader.c,
	test/fixtures/leader/helo-temporary-failure-reputation.{txt,conf}: treat
	temporary-failure as accept for reputation mode milter.

	* test/lib/milter-test-client.rb: support conditional action on
	HELO.

	* milter/manager/milter-manager-children.c,
	test/manager/test-leader.c,
	test/fixtures/leader/helo-reject-reputation.{txt,conf}: treat
	reject as accept for reputation mode milter.

2009-08-12  Kouhei Sutou  <kou@clear-code.com>

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-configuration.rb,
	doc/configuration.rd*: support milter.reputation_mode
	configuration.

	* binding/ruby/test/manager/: follow the recent reputation mode
	changes.

	* test/manager/test-configuration.c: follow the recent changes.

	* milter/manager/milter-manager-egg.c,
	test/manager/test-egg.c: support reputation mode serialization.

	* milter/manager/milter-manager-egg.[ch],
	test/manager/test-egg.c: add reputation mode.

	* milter/manager/milter-manager-child.c: simply description.

	* milter/manager/milter-manager-child.[ch],
	test/manager/test-child.c: add reputation mode.

	* html/milter-manager.css: add an entry for upgrade in menu bar.

	* doc/upgrade-on-*.rd: write.

	* doc/*.rd*: 1.2.0 -> 1.3.0.

	* configure.ac: 1.3.0 -> 1.3.1.

	* Makefile.am (release): follow the recent misc/release.rb changes.

	* html/index.html*: add an anchor to changes.

	* doc/reference/header-dev*.html: 1.1.1 -> 1.3.0.

	* README*: add a description for mailing list.

	* milter-manager.spec.in: add an entry for 1.3.0.

	* html/index.html*: 1.1.1 -> 1.3.0.

	* NEWS*: add an entry for 1.3.0.

2009-08-10  Kouhei Sutou  <kou@clear-code.com>

	* doc/install-options-to-freebsd.rd*: add a note for RRDtool 1.3.8.

2009-08-09  Kouhei Sutou  <kou@clear-code.com>

	* milter/manager/milter-manager-children.[ch],
	test/fixtures/leader/: improve error message.

	* test/lib/milter-test-client.rb: support action on DATA.

	* test/manager/test-leader.c,
	test/fixtures/leader/data-reply-code-reject.txt,
	test/fixtures/leader/Makefile.am: add a test for reply-code on
	DATA.

2009-08-04  Kouhei Sutou  <kou@clear-code.com>

	* milter/manager/milter-manager-children.c,
	test/fixtures/leader/end-of-message-without-header.txt,
	test/manager/test-leader.c,
	test/fixtures/leader/Makefile.am: fix SEGV on end-of-message
	without header event.

	* milter/manager/milter-manager-children.c,
	test/fixtures/leader/envelope-from-with-macro.txt,
	test/manager/test-leader.c: fix a bug that macros on envelope from
	aren't passed to children.

	* test/fixtures/leader/envelope-from-stop.{txt,conf},
	test/manager/test-leader.c,
	test/fixtures/leader/Makefile.am (EXTRA_DIST): add a test for stop
	on envelope from.

	* test/fixtures/leader/Makefile.am (EXTRA_DIST): fix a typo.

2009-08-03  Kouhei Sutou  <kou@clear-code.com>

	* configure.ac: 1.2.1 -> 1.3.0.

	* milter/server/milter-server-context.c: don't reset status for
	statistics. :<

	* test/manager/test-leader.c: run main loop once to handle client
	response.

	* test/tool/test-log-analyzer.rb: parse X-Virus-Status for
	detecting virus.


	* milter/manager/milter-manager-children.c: use server context's status.

	* milter/server/milter-server-context.[ch]: keep its status.

	* milter/core/milter-protocol-agent.[ch]
	(milter_protocol_agent_clear_message_related_macros): add.

	* bindings/ruby/, tool/milter-test-server.c,
	test/manager/test-children.c, test/manager/test-leader.c,
	test/fixtures/leader/: follow the above changes.

	* test/lib/milter-test-client.rb: suppress log message by default.

2009-07-28  Kouhei Sutou  <kou@clear-code.com>

	* test/manager/test-leader.c,
	test/fixtures/leader/end-of-message-discard-again.txt,
	test/fixtures/leader/envelope-from-discarded-again.txt: just add
	tests for discarded messages in a SMTP session.

	* test/lib/milter-test-client.rb: accept envelope-from after abort.

2009-07-28  Kouhei Sutou  <kou@clear-code.com>

	* configure.ac: 1.2.0 -> 1.2.1.

	* milter/client/milter-client-context.c,
	test/client/test-client-context-reply.c: send quarantine packet
	with the following action packet (e.g. accept) to avoid Postfix's
	rough quarantine implementation. :<

2009-07-27  Kouhei Sutou  <kou@clear-code.com>

	* test/tool/test-server.c: send continue after quarantine.

	* tool/milter-test-server.c: remove needless abort.

	* README*: add Tsuchiya to thanks list. Thanks!!!

	* milter/manager/milter-manager-children.c,
	test/fixtures/leader/quarantine-header-change.txt,
	test/manager/test-leader.c: delay quarantine request after header
	changes.
	Reported by Tsuchiya. Thanks!!!

	* test/lib/milter-manager-test-server.[ch]: add invalid header
	change request check.

	* test/lib/milter-test-client.rb: work --end-of-message.

2009-07-22  Kouhei Sutou  <kou@clear-code.com>

	* html/index.html*: add support information.

2009-07-17  Kouhei Sutou  <kou@clear-code.com>

	* html/index.html*: fix links.

	* html/Makefile.am (images): add missing file.

	* doc/install-to-*, doc/upgrade-on-*: 1.1.1 -> 1.2.0.

	* binding/ruby/Makefile.am (EXTRA_DIST): follow the recent
	test-unit change.

2009-07-15  Kouhei Sutou  <kou@clear-code.com>

	* milter-manager.spec.in: add an entry for 1.2.0.

	* test/tool/: use shorter name.

	* html/Makefile.am: remove nonexistent file.

	* test/tool/test-log-analyzer.rb: remove an unmaintenanceble test.

	* test/tool/test-log-analyzer.rb, test/tool/fixtures/: follow the
	implementation changes.

	* admin/test/functional/sessions_controller_test.rb: remove a garbage.

	* NEWS*: add an entry for 1.2.0.

	* doc/reference/header*, html/: upgrade HTML.

2009-07-14  Kouhei Sutou  <kou@clear-code.com>

	* html/index.html*, doc/reference/header*: add links.

	* doc/install-options-to-*: add tag.

	* doc/reverse-dictionary.rd*,
	doc/reference/milter-manager-docs.sgml: add reverse dictionary.

	* doc/configuration.rd*: add a description for
	milter-manager.local.conf.

2009-07-08  Kouhei Sutou  <kou@clear-code.com>

	* doc/install-to-freebsd.rd*: 7.1 -> 7.2.

	* doc/install-to-ubuntu.rd*: use milter_protocol = 6.

2009-07-07  Kouhei Sutou  <kou@clear-code.com>

	* milter/manager/milter-manager-children.c,
	tool/milter-test-server.c, test/: max supported protocol version
	is 6 not 8.

	* milter/manager/milter-manager-children.c,
	test/lib/milter-test-client.rb,
	test/manager/test-children.c: call stopper on DATA even if MTA's
	milter protocol version (e.g. 2) doesn't support it.

	* milter/server/milter-server-context.[ch],
	test/server/test-server-context-command.c: add protocol version
	check on DATA.

	* test/fixtures/children/negotiate-retry-fail.txt,
	test/fixtures/children/negotiate-retry.txt,
	test/fixtures/children/negotiate.txt,
	test/fixtures/leader/add-header-with-leading-space.txt,
	test/fixtures/leader/change-header-with-leading-space.txt,
	test/fixtures/leader/header-with-leading-space-no-space.txt,
	test/fixtures/leader/header-with-leading-space.txt,
	test/fixtures/leader/insert-header-with-leading-space.txt,
	test/fixtures/leader/negotiate.txt,
	test/lib/milter-test-client.rb,
	test/lib/milter-test-server.rb,
	test/manager/test-children.c,
	test/server/test-server-context-signals.c: follow the above change.

	* milter/client/milter-client-context.c
	(milter_client_context_class_init): fix typos.

	* milter/client/milter-client-context.[ch],
	milter/manager/milter-manager.c,
	libmilter/libmilter-compatible.c,
	test/client/test-client-context-address.c,
	test/client/test-client-context-body.c,
	test/client/test-client-context-callback.c,
	test/client/test-client-context-data.c,
	test/client/test-client-context-header.c,
	test/client/test-client-context-reply.c,
	test/client/test-client.c,
	tool/milter-test-client.c: don't handle end-of-message with chunk
	on client-context layer, it's more higher layer's work.
	This change supports Postfix 2.3.3 bundled in CentOS 5.3.
	Reported by Fumihisa Tonaka. Thanks!!!

	* milter/client/milter-client.c: add failed path into error
	message.

	* milter/core/milter-options,
	milter/manager/milter-manager-children.[ch],
	test/core/test-option.c: use milter protocol as higher version as
	possible.

	* README: update sgyk's contributions. Thanks!!!

	* milter/manager/milter-manager-children.c,
	test/fixtures/leader/header-stop-all.conf,
	test/fixtures/leader/header-stop-all.txt,
	test/lib/milter-manager-test-client.[ch],
	test/manager/test-leader.c: returns ACCEPT not CONTINUE when all
	milters are stopped on message oriented events.
	Reported by sgyk. Thanks!!!

	* doc/install-to-centos.rd*:
	- fix a typo.
	- update versions.

2009-07-06  Kouhei Sutou  <kou@clear-code.com>

	* doc/install-to-centos.rd*: use /etc/clamav-milter.conf instead
	of /etc/sysconfig/clamav-milter.

	* doc/install-to-centos.rd*: install sendmail-cf.

2009-07-03  Kouhei Sutou  <kou@clear-code.com>

	* html/blog/theme/milter-manager/milter-manager.css: add a style
	for image.photo.

	* doc/milter*.day.png: add the recent generated graphs.

	* html/index.html*: fix typos.

	* configure.ac: 1.1.1 -> 1.2.0.

	* html/index.html: add missing class.

	* admin/Makefile.am: remove config/secret.

	* doc/reference/header-dev*.html: add upgrade menu.

	* doc/reference/ja.po: update translations.

	* doc/Makefile.am, doc/upgrade-on-*,
	doc/reference/Makefile.am, doc/reference/milter-manager-docs.sgml:
	add documents for upgrading.

	* NEWS*: add local configuration file.

	* data/milter-manager.conf: load local configuration file
	"milter-manager.local.conf" if it exists.

	* doc/Makefile.am, doc/upgrade-options-on-*,
	doc/reference/Makefile.am, doc/reference/milter-manager-docs.sgml:
	add documents for upgrading.

	* doc/install.rd*, doc/install-options-to-*: update Rails and
	Passenger versions.

	* admin/config/environment.rb: add missing require.

	* admin/Makefile.am: add missing migration files.

	* NEWS*, html/index.html*, milter-manager.spec.in: 2009-07-02 ->
	2009-07-03.

	* admin/config/environment.rb: specify locale_rails version.

2009-07-02  Kouhei Sutou  <kou@clear-code.com>

	* TODO: add: * [1.3.0] add signals for logging. (each mail transaction
	finished for each milter and milter-manager, SMTP session
	finished for each milter and milter-manager)

	* NEWS*: set release day.

	* html/milter-manager.css: don't show outline for other language link.

	* milter-manager.spec.in: add 1.1.0 entry.

	* html/index.html*, doc/reference/header-dev*.html: 1.1.0 -> 1.1.1.

	* milter/manager/milter-manager-children.c: clear message oriented
	data missing in the recent commit.

	* test/lib/milter-test-client.rb:
	- add --end-of-message.
	- --end-of-message{,-regexp} -> --end-of-message-chunk{,-regexp}
	* test/fixtures/leader/: follow the above changes.

	* milter/manager/milter-manager-children.c,
	test/fixtures/leader/, test/manager/test-leader.c: clear message
	oriented data after mail transaction is finished.

	* milter/manager/milter-manager-children.c (cb_stopped): remove
	needless code.

	* milter/manager/milter-manager-leader.c: improve error log.

	* data/milter-manager.conf: add default values.

	* milter/manager/milter-manager-children.c,
	test/fixtures/leader/abort-on-end-of-message.txt,
	test/fixtures/leader/envelope-from-again.txt,
	test/manager/test-leader.c,
	test/manager/test-leader.c,
	NEWS*: support multi mail transactions.
	Reported by sgyk. Thanks!!!

	* NEWS*: add a name.

	* NEWS*: add an entry for 1.1.1.

2009-07-01  Kouhei Sutou  <kou@clear-code.com>

	* binding/ruby/lib/milter/manager.rb,
	module/configuration/ruby/milter-manager-ruby-configuration.c: run
	Ruby's GC on Ruby level not C level.

	* milter/manager/milter-manager-children.c: remove needless timer.

	* TODO: 1.1.1 -> 1.3.0.

	* TODO: remove: support elapsed time per milter. (don't count time
	between other milter is working but the milter isn't working)

	* doc/reference/milter-manager-docs.sgml: don't include
	performance related document in gtk-doc. It should be revised for
	publishing.

2009-06-30  Kouhei Sutou  <kou@clear-code.com>

	* milter/manager/milter-manager-children.c: add missing queue removing.

	* milter/manager/milter-manager-children.c: avoid double quit.

	* README*: add sgyk. Thanks!!!

	* milter/manager/milter-manager-children.[ch],
	test/lib/milter-manager-test-client.[ch],
	test/manager/test-leader.c,
	test/fixtures/leader/Makefile.am,
	test/fixtures/leader/header-stop.{conf,txt},
	test/fixtures/leader/data.txt: fix stop handling on message
	oriented event.
	Reported by sgyk. Thanks!!!

	* test/fixtures/leader/Makefile.am: fix typos.

	* milter/server/milter-server-context.c: log around stopper.

2009-06-29  Kouhei Sutou  <kou@clear-code.com>

	* binding/ruby/src/toolkit/rb-milter-option.c,
	binding/ruby/test/toolkit/test-option.rb: bind remove step.

	* binding/ruby/src/toolkit/rb-milter-option.c,
	binding/ruby/test/toolkit/test-option.rb: bind step merge.

	* binding/ruby/src/toolkit/rb-milter-option.c,
	binding/ruby/src/toolkit/rb-milter-core-private.h,
	binding/ruby/test/toolkit/test-option.rb: bind masks.

	* binding/ruby/src/toolkit/rb-milter-client.c: bind
	Milter::Client#main and Milter::Client#shutdown.

	* test/server/test-server-context-command.c: add tests for status.

	* data/applicable-conditions/Makefile.am,
	data/applicable-conditions/restrict-accounts.conf: add
	experimental applicable conditions to restrict milters by
	accounts.

2009-06-28  Kouhei Sutou  <kou@clear-code.com>

	* milter/server/milter-server-context.c: measure elapsed time.
	* milter/manager/milter-manager-children.c: log elapsed time
	measured by server context for debugging.

	* test/server/test-server-context-signals.c: suppress warnings.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/src/toolkit/rb-milter-client.c,
	binding/ruby/src/toolkit/rb-milter.h,
	binding/ruby/test/manager/test-configuration-loader.rb,
	binding/ruby/test/manager/test-configuration.rb,
	doc/configuration.rd{,.ja}: make suspend_time_on_unacceptable
	customizable.

	* TODO: remove: [1.1.1] make suspend_on_unacceptable customizable.

	* milter/manager/milter-manager.c: get/set suspend time on
	unacceptable from configuration.

	* milter/manager/milter-manager-configuration.[ch],
	test/manager/test-configuration.c: add suspend time on unacceptable.

	* milter/client.h, milter/client/milter-client.c: make suspend
	time on unacceptable customizable.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-configuration-loader.rb:
	support milter.applicable_conditions += ["additional condition"].

	* milter/manager/milter-manager-children.c
	(remove_queue_in_negotiate): receive all event to run stopper
	callback on all events.

	* milter/manager/milter-manager-children.c,
	milter/server/milter-server-context.[ch],
	test/server/test-server-context.c,
	test/server/test-server-context-signals.c,
	test/server/test-server-context-command.c: move MILTER_STEP_NO_XXX
	check to MilterServer from MilterManagerChildren to run stopper
	callback for skipped event.

	* milter/core/milter-option.[ch], test/core/test-option.c: add
	convenience functions to get categorized step flags.

	* milter/manager/milter-manager-children.c,
	test/manager/test-leader.c,
	test/fixtures/leader/envelope-recipient-stop.conf,
	test/fixtures/leader/envelope-recipient-stop.txt: treat stop on
	envelope recipient as continue.

	* milter/manager/milter-manager-configuration.c,
	test/manager/test-configuration.c: support absolute configuration
	path loading.

	* milter/manager/milter-manager-children.c: remove a garbage.

	* binding/ruby/lib/milter/manager/Makefile.am,
	binding/ruby/lib/milter/manager/init-detector.rb,
	binding/ruby/lib/milter/manager/milter-greylist-socket-detector.rb,
	binding/ruby/lib/milter/manager/redhat-init-detector.rb,
	binding/ruby/lib/milter/manager/redhat-upstart-detector.rb,
	binding/ruby/test/manager/test-redhat-init-detector.rb,
	binding/ruby/test/manager/test-redhat-upstart-detector.rb:
	support Fedora style milter-greylist detection.

	* binding/ruby/lib/milter/manager/redhat-upstart-detector.rb:
	remove a garbage.

2009-06-27  Kouhei Sutou  <kou@clear-code.com>

	* tool/milter-test-server.c, test/tool/test-server.c: treat
	reject/temporary failure if all recipients are reject/temporary
	failure.

2009-06-25  Kouhei Sutou  <kou@clear-code.com>

	* milter/manager/milter-manager-children.c: fix wrong argument.

	* milter/manager/milter-manager-children.c,
	test/fixtures/leader/header-reject.txt,
	test/fixtures/leader/header-temporary-failure.txt,
	test/manager/test-leader.c: fix a bug that failure
	response from child milter while message oriented processing
	isn't returned.
	Suggested by Fumihisa Tonaka. Thanks!!!

	* test/lib/milter-test-client.rb: support header condition.

2009-06-24  Kouhei Sutou  <kou@clear-code.com>

	* binding/ruby/lib/milter/manager/,
	binding/ruby/test/manager/,
	data/defaults/redhat.conf: support upstart version ClamAV milter.
	Suggested by Fumihisa Tonaka. Thanks!!!

	* binding/ruby/lib/milter/manager/detector.rb,
	binding/ruby/lib/milter/manager/redhat-init-detector.rb,
	binding/ruby/test/manager/test-redhat-init-detector.rb: support
	ClamAV 0.95 or later on RedHat.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-configuration.rb: dump
	manager.custom_configuration_directory.

2009-06-23  Kouhei Sutou  <kou@clear-code.com>

	* doc/configuration.rd{,.ja},
	binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-configuration-loader.rb: add
	manager.custom_configuration_directory.

	* milter/manager/milter-manager-main.c,
	milter/manager/milter-manager-configuration.[ch],
	test/manager/test-configuration.c: path -> directory.

	* milter/manager/milter-manager-main.c: use custom_configuration_path.

	* milter/manager/milter-manager-configuration.[ch],
	test/manager/test-configuration.c: add custom_configuration_path.

	* src/Makefile.am (milter_manager_LDADD): add missing
	libmilter-server.
	Reported by Fumihisa Tonaka. Thanks!!!

2009-06-20  Kouhei Sutou  <kou@clear-code.com>

	* milter/core/milter-agent.c, milter/core/milter-reader.c,
	milter/core/milter-writer.c: add more logs.

	* test/server/test-server-context-signals.c: add needed pipe-mode set.

	* test/libmilter/test-libmilter-compatible.c: ensure re-initialize.

	* milter/core/milter-writer.c: guard from double close.

	* milter/core/milter-agent.c: fix a typo.

2009-06-19  Kouhei Sutou  <kou@clear-code.com>

	* doc/Makefile.am: add misc/ to include path.

2009-06-18  Kouhei Sutou  <kou@cozmixng.org>

	* tool/milter-manager-log-analyzer: use AREA and STACK.

2009-06-12  Kouhei Sutou  <kou@clear-code.com>

	* TODO: add: milter-manager-log-analyzer: <X-Greylist>=<Sender is
	SPF-compliant ...> should be counted as SPF pass.

2009-06-11  Kouhei Sutou  <kou@clear-code.com>

	* milter/server/milter-server-context.c,
	test/server/test-server-context-command.c: don't set
	MILTER_STATUS_ABORT on quit.

2009-06-10  Kouhei Sutou  <kou@clear-code.com>

	* tool/milter-manager-log-analyzer: milter-dkim uses
	"dkim=neutral (verification failed)" not "fail".

	* tool/milter-manager-log-analyzer: ENMA uses "hardfail" not "fail".

	* TODO:
	- add: support elapsed time per milter. (don't count time between
	other milter is working but the milter isn't working)
	- delete: support munin?
	- delete:  generates a result status graph for each milter.

	* milter/client/milter-client-context.c: use last_state instead of state.

	* milter/manager/milter-manager.c: log session end on client is
	finished not leader is finished.

	* milter/manager/milter-manager-leader.c: no-reply actions, abort
	and quite, returns response immediately.

	* milter/core/milter-reader.c (read_from_channel): log EOF.

	* milter/client/milter-client-context.c: log abort response.

	* milter/manager/milter-manager-leader.c (cb_error): use fallback
	status instead of fixed temporary failure status.

	* milter/client/milter-client-context.c: set abort status.

	* milter/server/milter-server-context.c: use
	MILTER_STATUS_IS_PASS().

	* milter/manager/milter-manager-leader.c: remove needless
	statistics log.

	* milter/core/milter-protocol.h, test/core/test-protocol.c: add
	MILTER_STATUS_IS_PASS().

	* milter/manager/milter-manager-children.c,
	milter/manager/milter-manager.c, tool/milter-test-server.c: use
	MILTER_STATUS_IS_PASS().

	* tool/milter-manager-log-analyzer: use grey for Greylisting.

2009-06-09  Kouhei Sutou  <kou@cozmixng.org>

	* milter/server/milter-server-context.c: remove needless
	statistics log.

	* tool/milter-manager-log-analyzer: escape ':' for URI.

	* tool/milter-manager-log-analyzer: add each milter's report.

	* tool/milter-manager-log-analyzer: add milter manager's milter
	applied report.

	* tool/milter-manager-log-analyzer: add 'status' to name.

	* tool/milter-manager-log-analyzer: milter manager's status log
	doesn't need stop result.

2009-06-09  Kouhei Sutou  <kou@clear-code.com>

	* tool/milter-manager-log-analyzer: add index for each graph.

	* tool/milter-manager-log-analyzer: unify duplicated codes.

	* tool/milter-manager-log-analyzer: remove needless codes.

	* tool/milter-manager-log-analyzer: change RRD file name to
	#{type}.rrd from milter-log.#{type}.rrd.

	* tool/milter-manager-log-analyzer: fix unit.

	* tool/milter-manager-log-analyzer: support per milter graph.

	* milter/server/milter-server-context.c,
	test/tool/test-server.c: fix status on envelope recipient for
	milter that already sent reply for envelope recipient.

	* milter/server/milter-server-context.c: use status for the last
	envelope recipient status when connection is terminated on
	envelope recipient.

	* tool/milter-manager-log-analyzer: add error status.

	* milter/server/milter-server-context.c: use quarantine, stop and
	error status.

	* test/server/test-server-context-signals.c,
	test/tool/test-server.c: follow the above changes.

	* milter/core/milter-protocol.h: add quarantine, stop and error
	status.

	* tool/milter-manager-log-analyzer: support no RRDtool binding
	environment.

	* tool/milter-manager-log-analyzer: support migration.

2009-06-09  Kouhei Sutou  <kou@cozmixng.org>

	* milter/manager/milter-manager-children.c: remove a garbage.

2009-06-08  Kouhei Sutou  <kou@cozmixng.org>

	* milter/manager/milter-manager-children.c: log added headers for
	statistics.

	* milter/client/milter-client.c: don't use pointer for log.

	* milter/manager/milter-manager.c,
	milter/manager/milter-manager-children.c: use tag instead of
	pointer for log.

	* milter/client/milter-client-context.[ch]: keep status and the
	last state.

	* milter/manager/milter-manager.c: log status and the last state
	as statistics.

	* tool/milter-manager-log-analyzer: follow the above changes.

	* milter/manager/milter-manager-children.c:
	use the last server context state for statistics.

	* milter/server/milter-server-context.[ch],
	test/server/test-server-context.c: add
	milter_server_context_get_last_state() that returns the last
	milter protocol state.

	* milter/manager/milter-manager-children.c: avoid race conditions
	on sending a UNKNOWN command to milters.

	* milter/client/milter-client-context.c,
	milter/manager/milter-manager-children.c: reduce statistics log.

	* tool/milter-manager-log-analyzer: follow the above changes.

2009-06-07  Kouhei Sutou  <kou@cozmixng.org>

	* TODO: add: [1.1.1] support a configration for max file
	descriptor number that can be opened. (ref. setrlimit() and
	RLIMIT_NOFILE)

2009-06-06  Kouhei Sutou  <kou@cozmixng.org>

	* milter/manager/milter-manager-children.c: avoid race conditions
	on sending a command to milters.

	* milter/manager/milter-manager-children.c: log how many milters
	are used.

	* milter/client/milter-client-context.[ch],
	test/client/test-client-context-callback.c: emit abort with state
	even if outside message processing. Determining whether user's
	abort callback is called or not is upper layer's work.

	* milter/core/milter-marshalers.list,
	milter/manager/milter-manager.c, test/client/,
	tool/milter-test-client.c: follow the above changes.

	* libmilter/libmilter-compatible.c: don't call user's abort
	callback when outside message processing.

2009-06-05  Kouhei Sutou  <kou@clear-code.com>

	* milter/client/milter-client-context.[ch],
	test/client/test-client-context-callback.c: don't emit abort
	outside message processing.
	case: e.g. HELO -> ABORT -> StartTLS -> HELO

	* html/milter-manager.css: support table in GTK-Doc.

	* doc/performance.rd.ja, doc/reference/milter-manager-docs.sgml:
	add a document for performance.

2009-06-02  Kouhei Sutou  <kou@clear-code.com>

	* html/: format.

	* configure.ac: 1.1.0 -> 1.1.1.

	* html/index.html*: add a section for development series packages.

	* html/index.html*: add a section for development series.

	* doc/reference/: add templates for development release.

	* configure.ac: detect development release.

	* doc/reference/Makefile.am: change reference manual position for
	development release.

	* milter-manager.spec.in: add a 1.1.0-1 entry.

	* NEWS*: update.

2009-05-27  Kouhei Sutou  <kou@clear-code.com>

	* NEWS.ja: add.

	* milter/core/milter-reader.c: fix a bug that launcher process
	isn't shutdown with main process.

2009-05-25  Kouhei Sutou  <kou@cozmixng.org>

	* TODO: add: [1.1.1] support Postfix access(5) and cidr_table(5)
	format for whitelist applicable condition.

2009-05-25  Kouhei Sutou  <kou@clear-code.com>

	* tool/milter-manager-log-analyzer: really work as stream.

	* test/tool/: use dumped result to compare.

2009-05-24  Kouhei Sutou  <kou@cozmixng.org>

	* configure.ac: 1.0.1 -> 1.1.0.

	* TODO: remove:
	- [1.1.0] reduce memory usage of milter-manager-log-analyzer.

	* tool/milter-manager-log-analyzer: fix conversion problem.

	* test/tool/: use nearly date log.

	* test/tool/fixtures/: add more test log.

	* tool/milter-manager-log-analyzer: parse as stream.

	* tool/milter-manager-log-analyzer: parse as stream. just stop.rrd.

	* test/tool/test-log-analyzer.rb: create dummy RRD file.

	* tool/milter-manager-log-analyzer: parse as stream. just mail.rrd.

	* doc/reference/Makefile.am: use detected rd2.

	* doc/Makefile.am (install-data-local): don't install cutter.jman
	on unavailable environment.

	* test/tool/test-log-analyzer.rb: fix end time calculation.

2009-05-21  Kouhei Sutou  <kou@cozmixng.org>

	* test/tool/: add a test for graph output.

	* test/tool/: add a test for milter-manager-log-analyzer.

2009-05-19  Kouhei Sutou  <kou@cozmixng.org>

	* milter/core/milter-reader.c, milter/core/milter-writer.c:
	suppress infinite loop on error while shutdown.

2009-05-18  Kouhei Sutou  <kou@cozmixng.org>

	* TODO: add:
	- [1.1.0] make suspend_on_unacceptable customizable.
	- [1.1.0] support max connections by MilterClient.

	* milter/client/milter-client.c, milter/client.h,
	test/client/test-client.c: sleep on unacceptable.

2009-05-17  Kouhei Sutou  <kou@cozmixng.org>

	* milter/manager/milter-manager-leader.c (cb_abort): fix a memory leak.

	* milter/core/milter-syslog-logger.c (cb_log): fix a memory leak.

	* TODO: remove: [1.1.0] ignore error for existed but unreadable
	config file. e.g. /etc/sysconfig/amavisd on CentOS.

	* binding/ruby/lib/milter/manager/clamav-milter-socket-detector.rb,
	binding/ruby/lib/milter/manager/debian-init-detector.rb,
	binding/ruby/lib/milter/manager/enma-socket-detector.rb,
	binding/ruby/lib/milter/manager/init-detector.rb,
	binding/ruby/lib/milter/manager/rcng-detector.rb,
	binding/ruby/lib/milter/manager/redhat-init-detector.rb,
	binding/ruby/test/manager/test-freebsd-rc-detector.rb:
	use File.readable? instead of File.exist?.

	* TODO: remove: [1.1.0] support clamav-milter detection on sid.

	* binding/ruby/lib/milter/manager/debian-init-detector.rb,
	binding/ruby/lib/milter/manager/detector.rb,
	binding/ruby/test/manager/test-debian-init-detector.rb: support
	clamav-milter 0.95 on Debian sid.

2009-05-15  Kouhei Sutou  <kou@cozmixng.org>

	* html/blog/tdiary.conf: update download URL.

2009-05-14  Kouhei Sutou  <kou@clear-code.com>

	* TODO:
	- remove: milter-manager-admin: update to Rails 2.3.2.
	- remove: milter-manager-admin: supports fallback status.
	- add: [1.1.0] support clamav-milter detection on sid.
	- add: [1.1.0] reduce memory usage of milter-manager-log-analyzer.

	* NEWS*: add a 1.0.1 entry.

	* html/index.html*, doc/reference/header*.html: 1.0.1 is the
	latest release.

	* data/init.d/redhat/milter-manager: work condrestart.

2009-05-12  Kouhei Sutou  <kou@cozmixng.org>

	* admin/config/environment.rb: don't use common secret.

	* admin/config/environment.rb: specify gem version.

	* admin/, binding/ruby/: make fallback status updatable.

	* admin/: show fallback status.

	* admin/: support fallback status.

	* admin/: use Rails 2.3.2 instead of 2.2.2.

2009-05-06  Kouhei Sutou  <kou@cozmixng.org>

	* html/index.html*, html/milter-manager.css,
	html/mini-install.png: add install links to sidebar.

	* TODO: add: Exim local_scan support.

	* data/defaults/*: apply "Sendmail Compatible" applicable
	condition to milter-greylist.

2009-05-05  Kouhei Sutou  <kou@cozmixng.org>

	* data/defaults/*.conf: use milter-greylist as the last milter to
	use other milter's result.

	* doc/reference/prepare-for-publishing.rb,
	doc/reference/Makefile.am: use Cutter's
	prepare-gtk-doc-html-for-publishing.rb.

2009-05-04  Kouhei Sutou  <kou@cozmixng.org>

	* test/client/test-client-context-header.c: remove needless tests.

	* tool/, test/: use example.com instead of cozmixng.org for sample
	domain.

	* TODO: add: milter-test-server: stop processing if all recipients
	are rejected.

	* doc/milter-test-server.rd*: add --authenticated-* option.

	* test/tool/test-server.c: cleanup.

	* test/tool/test-server.c (option_test_assert_large_mail): write you.

	* tool/milter-test-server.c, test/tool/test-server.c:
	make authentication macros customizable.

	* TODO: remove: milter-test-server supports non-auth connection
	by command line option.

	* tool/milter-test-server.c: use g_printf() instead of g_print().

	* TODO: remove: milter-test-server supports reply-code.

	* test/tool/test-server.c, tool/milter-test-server.c: support
	reply-code.

	* milter/server/milter-server-context.c,
	test/server/test-server-context-signals.c: apply reply code status
	to server context status.

	* TODO: add: XMail support.

2009-05-03  Kouhei Sutou  <kou@cozmixng.org>

	* TODO: add: child milter: reputation mode.

	* TODO: add: milter-manager-admin: supports fallback status.

	* TODO:
	- remove: add stopper interfaces on all events (e.g. DATA, BODY
	  and so on)
	- add: milter-test-server supports reply-code.
	- add: milter-test-server supports non-auth connection by command
	  line option.

	* binding/ruby/lib/milter/manager.rb,
	doc/configuration.rd*: support stop callback on HELO, DATA,
	END-OF-HEADER, BODY and END-OF-MESSAGE.

	* milter/server/milter-server-context.[ch],
	test/server/test-server-context.c: make status updatable.

	* milter/manager/milter-manager-children.c: update child milter's
	status as fallback status.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-configuration.rb: show fallback
	status configuration.

	* TODO: remove: per milter fallback status.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-configuration-loader.rb,
	doc/configuration.rd*: support per milter fallback status configuration.

	* milter/manager/milter-manager-children.c,
	test/manager/test-children.c,
	test/fixtures/children/connect-fail.txt,
	test/fixtures/children/Makefile.am: use fallback status on
	unexpected case.

2009-05-02  Kouhei Sutou  <kou@cozmixng.org>

	* milter/manager/milter-manager-leader.c,
	milter/server/milter-server-context.c: show more log message on
	negotiation.

2009-04-27  Kouhei Sutou  <kou@cozmixng.org>

	* TODO: remove: don't handle log event in Ruby/GLib.

	* milter/core/milter-logger.h: reorder.

	* milter/manager/milter-manager-main.c: handle SIGSEGV and SIGABRT
	to show stack trace.
	* TODO: remove: show more information on SEGV.

2009-04-26  Kouhei Sutou  <kou@cozmixng.org>

	* module/configuration/ruby/milter-manager-ruby-configuration.c:
	use another workaround. don't disable GC even if Ruby/GLib 0.17.0
	is used.

	* data/milter-manager.conf: add a default manager.maintenance_interval
	configuration as comment.

	* module/configuration/ruby/milter-manager-ruby-configuration.c:
	don't run GC with Ruby/GLib 0.17.0 because Ruby/GLib 0.17.0 has a
	bug related GC.

	* milter/manager/milter-manager-configuration.[ch]: add
	maintenance interval configuration.

	* module/configuration/ruby/milter-manager-ruby-configuration.c:
	remove periodically GC. Use manager.maintenance_interval instead.

	* binding/ruby/test/manager/test-configuration-loader.rb,
	binding/ruby/test/manager/test-configuration.rb,
	binding/ruby/test/manager/test-custom-xml-loader.rb,
	binding/ruby/test/manager/test-egg.rb: follow the recent changes.

2009-04-25  Kouhei Sutou  <kou@cozmixng.org>

	* doc/configuration.rd*,
	binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-configuration-loader.rb,
	binding/ruby/test/manager/test-configuration.rb: add
	manager.maintenance_interval configuration.

	* module/configuration/ruby/milter-manager-ruby-configuration.c:
	run GC on maintain.

	* milter/manager/milter-manager.c: call session finished callback
	of configuration.

	* milter/manager/milter-manager-configuration.[ch]: add session
	finished callback.

	* milter/manager/milter-manager-leader.[ch],
	test/manager/test-leader.c: add configuration getter to leader.

	* milter/manager/milter-manager-module.c: call "exit" callback to
	clean module up on shutdown even if some types are registered.

	* binding/ruby/src/manager/rb-milter-manager-children.c (mark):
	guard children from GC.

	* module/configuration/ruby/milter-manager-ruby-configuration.c
	(load): run GC after loading configuration file.

	* milter/manager/milter-manager-main.c
	(append_user_local_configuration_path): fix a memory leak.

	* doc/reference/prepare-for-publishing.rb: add " - milter manager"
	suffix.

2009-04-23  Kouhei Sutou  <kou@clear-code.com>

	* TODO:
	- add: show more information on SEGV.
	- add: ignore error for existed but unreadable config file.

2009-04-23  Kouhei Sutou  <kou@cozmixng.org>

	* milter/client/milter-client-context.c: add tag into log message.

	* milter/manager/milter-manager-leader.c: propagate manager tag to
	children.

	* milter/manager/milter-manager-children.c: fix initialize order.

	* test/manager/test-configuration.c: follow the recent
	fallback-status configuration XML change.

	* milter/: add tag into log message.

2009-04-22  Kouhei Sutou  <kou@cozmixng.org>

	* milter/client/milter-client-context.c: fix typos in statistics log
	message.

	* milter/core/milter-agent.c,
	test/client/test-client-context-base.c: propagate tag.

	* milter/core/milter-{agent,decoder,encoder,reader,writer}.[ch],
	test/core/test-{decoder,encoder,reader,writer}.c,
	test/client/test-client-context-base.c: add tag for debugging.

2009-04-22  Kouhei Sutou  <kou@clear-code.com>

	* doc/install-to-{ubuntu,centos,freebsd}.rd*: run 'milter-manager
	--show-config' as milter-manager user.

2009-04-21  Kouhei Sutou  <kou@cozmixng.org>

	* milter/manager/milter-manager-egg.c,
	test/manager/test-egg.c: support fallback status XML serialization.

	* milter/core/milter-utils.[ch],
	test/core/test-utils.c: add milter_utils_xml_append_enum_element().

	* milter/manager/milter-manager-egg.[ch], test/manager/test-egg.c:
	egg has fallback status configuration.

	* milter/manager/milter-manager-child.[ch],
	test/manager/test-child.c: child milter has its fallback status.

	* tool/milter-performance-check
	(MilterPerformanceTool#send_mails_in_interval): use size instead
	of count.

	* milter/core/milter-logger.[ch]: add a function and a macro to
	delegate GLib log to MilterLogger.
	* milter/core/, milter/client/, milter/server/, milter/server/,
	tool/: use the above delegation.

2009-04-21  Kouhei Sutou  <kou@clear-code.com>

	* milter/core/milter-command-encoder.c,
	test/core/test-command-encoder.c: support unknown socket family
	encoding.

2009-04-20  Kouhei Sutou  <kou@cozmixng.org>

	* TODO: remove: Postfix sends unknown socket family
	(MILTER_SOCKET_FAMILY_UNKNOWN) but when?

	* binding/ruby/lib/milter/toolkit.rb,
	binding/ruby/src/toolkit/rb-milter-connection.c,
	binding/ruby/src/toolkit/rb-milter-core-private.c,
	binding/ruby/src/toolkit/rb-milter-socket-address.c,
	binding/ruby/src/toolkit/rb-milter.h,
	binding/ruby/test/toolkit/test-socket-address.rb: support unknown
	family.

	* milter/core/milter-connection.c, test/core/test-connection.c:
	support unknown family inspection.

	* milter/core/milter-command-decoder.c,
	test/core/test-command-decoder.c: support unknown family on connect.

2009-04-20  Kouhei Sutou  <kou@clear-code.com>

	* configure.ac, doc/Makefile.am: add rd2 check.

	* autogen.sh: add workaround for old intltoolize.

2009-04-19  Kouhei Sutou  <kou@cozmixng.org>

	* test/lib/milter-manager-test-client.c: accept a large chunk
	passed as small chunks.

	* test/manager/test-leader.c: support chunk data from file but a
	test for large body mail and skip case isn't writable...

	* milter/manager/milter-manager-children.c: fix a bug that milter
	manager sends body chunks without waiting milter reply.

	* TODO:
	- remove: dkim-filter returns skip twice for large body mail.
	- add: write a test for over max body chunk size (65535) and skip case.

	* binding/ruby/lib/milter/manager/freebsd-rc-detector.rb,
	binding/ruby/test/manager/test-freebsd-rc-detector.rb: support
	ClamAV >= 0.95 on FreeBSD platform.

	* binding/ruby/lib/milter/manager/rcng-detector.rb,
	binding/ruby/lib/milter/manager/pkgsrc-rc-detector.rb: make
	application specific connection spec guessing overridable generic
	connection spec.

	* milter/core/milter-reader.c (channel_watch_func): suppress
	hung up report when shutdown is requested.

	* binding/ruby/lib/milter/manager/Makefile.am,
	binding/ruby/lib/milter/manager/clamav-milter-socket-detector.rb,
	binding/ruby/lib/milter/manager/debian-init-detector.rb,
	binding/ruby/test/manager/test-debian-init-detector.rb: support
	ClamAV >= 0.95 on Debian platform.

	* binding/ruby/lib/milter/manager/pkgsrc-rc-detector.rb: use
	#{package_prefix}/enma.conf as default enma.conf place.

	* binding/ruby/lib/milter/manager/freebsd-rc-detector.rb,
	binding/ruby/test/manager/test-freebsd-rc-detector.rb,
	data/defaults/freebsd.conf: add ENMA support on FreeBSD.

	* binding/ruby/lib/milter/manager/pkgsrc-rc-detector.rb,
	binding/ruby/lib/milter/manager/rcng-detector.rb,
	binding/ruby/lib/milter/manager/redhat-init-detector.rb,
	binding/ruby/test/manager/test-pkgsrc-rc-detector.rb,
	binding/ruby/test/manager/test-redhat-init-detector.rb,
	data/defaults/pkgsrc.conf,
	data/defaults/redhat.conf: find enma.conf without explicit
	detector specification.

	* doc/Makefile.am (EXTRA_DIST): add missing Japanese document file.

	* milter/core/milter-reader.c (channel_watch_func): ignore
	G_IO_HUP when EOF or an error is already occurred.

	* doc/Makefile.am (install-data-local):
	- use mkdir_p instead of MKDIR_P.
	- add missing dependencies.

2009-04-17  Kouhei Sutou  <kou@clear-code.com>

	* html/index.html*: add a link to milter-manager introduction page.

	* doc/reference/header.html: fix link URLs.
	Reported by Павел Гришин. Thanks!!!

2009-04-16  Kouhei Sutou  <kou@clear-code.com>

	* TODO: add: add stopper interfaces on all events (e.g. DATA, BODY
	and so on)

	* html/index.html*: 0.9.0 -> 1.0.0.

	* test/lib/milter-manager-test-client.c: sort macro names to
	improve test stability.

	* module/configuration/ruby/milter-manager-ruby-configuration.c:
	run Ruby's GC periodically.
	* TODO: remove: run Ruby's GC periodically.

	* binding/ruby/test/manager/test-debian-init-detector.rb: follow
	the data/init.d/debian/milter-manager.conf changes.

	* binding/ruby/test/manager/test-redhat-init-detector.rb: follow
	the data/init.d/redhat/milter-manager.conf changes.

	* html/logo.*: don't use opacity for background.

	* TODO: add: support Postfix SMTP Access Policy Delegation protocol.

	* configure.ac: 1.0.0 -> 1.0.1.

2009-04-13  Kouhei Sutou  <kou@clear-code.com>

	* TODO: add: run Ruby's GC periodically.

	* doc/: add milter manager logo with description.

2009-04-12  Kouhei Sutou  <kou@cozmixng.org>

	* TODO: add: per milter fallback status.

2009-04-11  Kouhei Sutou  <kou@cozmixng.org>

	* TODO: add: support munin?

	* TODO: add: milter-manager-admin: update to Rails 2.3.2.

	* doc/milter-manager.rd, doc/milter-performance-check.rd,
	doc/milter-test-client.rd, doc/milter-test-server.rd: use "
	instead of ' for man.

	* data/init.d/debian/milter-manager: add required-start and
	required-stop.

	* milter/core/milter-error-emittable.h: add missing argument document.

	* README*, doc/install-to-freebsd.rd*, doc/reference/header*.html:
	update download URL.

	* TODO: add: generates a result status graph for each milter.

	* configure.ac: 0.9.1 -> 1.0.0. :-)

	* NEWS*: update.

	* html/blog/theme/milter-manager/milter-manager.css: fix indent style.

2009-04-10  Kouhei Sutou  <kou@clear-code.com>

	* data/init.d/redhat/milter-manager (GROUP): milter-manager is ran
	as milter-manager group.

	* data/init.d/redhat/sysconfig/milter-manager: add default value
	as comment.

	* milter-manager.spec.in: create milter-manager user on pre-install.

2009-04-09  Kouhei Sutou  <kou@cozmixng.org>

	* html/index.html{,.ja}, doc/reference/head{,-ja}.html: set favicon.

2009-04-09  Kouhei Sutou  <kou@clear-code.com>

	* milter-manager.spec.in: create home directory.

	* data/defaults/redhat.conf,
	binding/ruby/lib/milter/manager/redhat-init-detector.rb: support
	enma detection on Red Hat platform.

	* html/favicon.*: add favicon.

	* milter-manager.spec.in: setup useful configuration.

	* doc/install-options-to-centos.rd*: use RPM package.

	* doc/install-to-centos.rd*: use RPM package.

	* admin/public/dispatch.*: ruby1.8 -> ruby.

	* doc/install-options-to-ubuntu.rd*: use Jun Kobayashi's package
	repository.

	* doc/install-to-ubuntu.rd*: use Jun Kobayashi's package repository.

	* doc/Makefile.am (install-data-local): add missing $(DESTDIR).

	* data/init.d/debian/default/milter-manager,
	data/init.d/redhat/sysconfig/milter-manager: add package system's
	user customize file for Debian and RedHat.

	* milter-manager.spec.in: add a spec file for RedHat.

	* doc/Makefile.am: install man in Japanese.

2009-04-07  Kouhei Sutou  <kou@clear-code.com>

	* doc/reference/Makefile.am: add --template-directory option.

	* configure.ac (PACKAGE_TITLE): milter-manager -> milter manager.

2009-04-06  Kouhei Sutou  <kou@clear-code.com>

	* doc/reference/header*.html: add lang.

	* html/index.html*: add lang.
	* html/milter-manager.css: fix size.

	* html/: resize images.

2009-04-04  Kouhei Sutou  <kou@cozmixng.org>

	* html/: improve style.

	* html/logo.png: add.

2009-04-03  Kouhei Sutou  <kou@cozmixng.org>

	* html/blog/theme/: add.

	* html/blog/: add.

	* doc/reference/ja.po: upload translations.

	* html/: fix styles.

2009-04-02  Kouhei Sutou  <kou@cozmixng.org>

	* configure.ac: add missing milter-manager group name in SF.net
	connection parameter.

	* html/: upload missing files.
	* doc/reference/: add common header and footer to HTMLs generated
	by GTK-Doc.

	* html/index.html: use new style.

	* README, README.ja: make image license public domain.

	* doc/: remove ClearCode logo.
	* html/: add logos of Tango and famfamfam.

2009-04-02  Kouhei Sutou  <kou@clear-code.com>

	* html/: add new HTML design.

2009-03-31  Kouhei Sutou  <kou@clear-code.com>

	* tool/milter-performance-check: --period and --interval works
	with --n-mails.

2009-03-23  Kouhei Sutou  <kou@clear-code.com>

	* doc/install-options-to-centos.rd*: use full path.

	* doc/install-to-ubuntu.rd*: add 'report_safe 0'.

	* TODO: add how handle MILTER_SOCKET_FAMILY_UNKNOWN.

2009-03-19  Kouhei Sutou  <kou@clear-code.com>

	* README*: improve links to Cutter.

	* TODO: remove:
	- write man for milter-manager, milter-test-client,
	milter-test-server and milter-log-tool.

	* doc/Makefile.am: mans in Japanese aren't installed.

	* README.ja: move milter-manager-log-analyzer entry to ...
	* doc/milter-manager-log-analyzer.rd.ja: ... here.

	* README.ja: move milter-performance-check entry to ...
	* doc/milter-performance-check.rd.ja: ... here.

	* README.ja: move milter-test-client entry to ...
	* doc/milter-test-client.rd.ja: ... here.

	* README.ja: move milter-manager entry to ...
	* doc/milter-manager.rd.ja: ... here.

	* README: move milter-manager entry to ...
	* doc/milter-manager.rd: ... here.

	* README: move milter-manager-log-analyzer entry to ...
	* doc/milter-manager-log-analyzer.rd: ... here.

	* README: move milter-performance-check entry to ...
	* doc/milter-performance-check.rd: ... here.

	* README: move milter-test-client entry to ...
	* doc/milter-test-client.rd: ... here.

2009-03-18  Kouhei Sutou  <kou@clear-code.com>

	* README: move milter-test-server entry to ...
	* doc/milter-test-server.rd: ... here.

	* doc/Makefile.am: auto-generate milter-test-server.1 from
	milter-test-server.rd.

2009-03-17  Kouhei Sutou  <kou@clear-code.com>

	* TODO, milter/manager/Makefile.am: fix wrong install location of
	milter/manager/ headers.

	* doc/install-to-ubuntu.rd.*: clamav-milter use --external option
	to use clamd.

2009-03-15  Kouhei Sutou  <kou@cozmixng.org>

	* html/index.html*: improve milter manager description.

2009-03-11  Kouhei Sutou  <kou@clear-code.com>

	* NEWS.ja: fix a typo.

2009-03-10  Kouhei Sutou  <kou@cozmixng.org>

	* TODO: add:
	- milter manager's header files should be installed into
	  include/milter/manater/ not include/milter-manager/.

	* TODO: add
	- bug? dkim-filter returns skip twice for large body mail.
	  (large body > (MILTER_CHUNK_SIZE == 65535))
	  It seems that MilterMangerChildren sends two body packets before
	  receiving response from dkim-filter.

2009-03-10  Kouhei Sutou  <kou@clear-code.com>

	* configure.ac: 0.9.0 -> 0.9.1. I hope that 0.9.0 will be 1.0.0. :)

	* doc/reference/Makefile.am (upload): don't use ssh.

	* html/Makefile.am (upload): don't use ssh.

	* configure.ac: use web.sourceforge.net instead of shell.sourceforge.net.

	* doc/install-to-others.rd*: describe about --with-rcddir.

	* doc/install.rd, doc/install.rd.ja: Cutter 1.0.6 had been released.

	* html/index.html, html/index.html.ja, doc/reference/sf-logo.html:
	use new SF.net logo and Piwik.

2009-03-09  Kouhei Sutou  <kou@cozmixng.org>

	* NEWS*: add entries for 0.9.0.

2009-03-09  Kouhei Sutou  <kou@clear-code.com>

	* doc/install-to-centos.rd*: add missing package to be installed.

	* doc/install-*.rd*: 0.8.1 -> 0.9.0.

	* html/index.html*: IPA project is finished.
	* doc/reference/milter-manager-docs.sgml: API reference isn't
	public yet.

	* TODO: add:
	- MilterCommandDecoder: support ESMTP parameters on MAIL FROM and
	  RCPT TO.

2009-03-09  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/test/run-test.rb: support gmake.

	* milter/core/milter-esmtp.c, test/core/test-esmtp.c: make
	buildable on FreeBSD.

2009-03-08  Kouhei Sutou  <kou@cozmixng.org>

	* TODO: add:
	- MilterCommandDecoder: support ESMTP parameters on MAIL FROM and
	  RCPT TO.
	- MilterCommandEncoder support encoding ESMTP parameters on
	  MAIL FROM and RCPT TO.

	* milter/core/milter-esmtp.c, test/core/test-esmtp.c:
	path should include '<' and '>'.

	* milter/core/milter-esmtp.[ch], test/core/test-esmtp.c:
	support RCPT TO.

	* milter/core/milter-esmtp.c: cleanup
	milter_esmtp_parse_mail_from_argument().

	* milter/core/milter-esmtp.c, test/core/test-esmtp.c:
	improve error message from milter_esmtp_parse_mail_from_argument().

	* milter/core/milter-esmtp.c, test/core/test-esmtp.c:
	milter_esmtp_parse_mail_from_argument() supports address list
	roughly and still too dirty.

	* milter/core/milter-esmtp.c, test/core/test-esmtp.c:
	milter_esmtp_parse_mail_from_argument() supports quoted local part
	but too dirty.

	* milter/core/milter-esmtp.c, test/core/test-esmtp.c:
	milter_esmtp_parse_mail_from_argument() supports parameter but too
	dirty.

	* milter/core/milter-esmtp.c, test/core/test-esmtp.c: implement
	milter_esmtp_parse_mail_from_argument(). But it's dirty and does
	not implement parameters yet.

	* milter/core/milter-esmtp.[ch], test/core/test-esmtp.c: add
	milter_esmtp_parse_mail_from_argument(). not implemented yet.

2009-03-05  Kouhei Sutou  <kou@cozmixng.org>

	* TODO: remove:
	- support controller's UNIX socket mode changing.
	- support controller's UNIX socket mode removing on close.

	* tool/milter-manager-log-analyzer: support [abort][%s].

	* TODO: remove:
	milter-manager-log-analyzer supports [abort][%s].

	* data/rc.d/milter-manager: fix a typo.

	* milter/manager/milter-manager-controller.c,
	test/manager/test-controller.c: support changing mode and group
	for controller's UNIX domain socket.

	* TODO: remove:
	support connection socket group separated by effective group.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-configuration-loader.rb,
	binding/ruby/test/manager/test-configuration.rb: support
	controller socket group.

	* milter/manager/milter-manager-configuration.[ch],
	test/manager/test-configuration.c: add controller socket group
	configuration.

2009-03-04  Kouhei Sutou  <kou@cozmixng.org>

	* milter/manager/milter-manager-controller.c,
	test/manager/test-controller.c: support remove UNIX domain socket
	for controller on close.

2009-03-03  Kouhei Sutou  <kou@cozmixng.org>

	* milter/manager/, test/manager/: create milter-manager-controller.[ch]
	and move controller connection accepting codes from
	milter-manager-main.c.

	* milter/manager/, test/manager/:
	milter-manager-controller ->
	milter-manager-controller-context.

	* README*: Cutter 1.0.6 is released.

2009-03-02  Kouhei Sutou  <kou@cozmixng.org>

	* configure.ac,
	binding/ruby/lib/milter/manager/pkgsrc-rc-detector.rb: support
	--with-rcddir option that is synonym for
	--with-package-options="rcddir=DIR".
	* TODO: remove: --rrddir? for covenience notation of
	--platform-optionns=rrddir=...

2009-03-01  Kouhei Sutou  <kou@cozmixng.org>

	* test/*/test-*.c: GCutData is hidden.

	* test/lib/milter-manager-test-utils.c, core/test-headers.c,
	test/core/test-headers.c: GCutInspectFunc -> GCutInspectFunction.

2009-02-24  Kouhei Sutou  <kou@clear-code.com>

	* tool/milter-manager-log-analyzer
	(MilterManagerLogAnalyzer::GraphGenerator#output_graph): don't use
	exponential number in vertical axis.

2009-02-19  Kouhei Sutou  <kou@cozmixng.org>

	* TODO:
	+ mailing list? (X-ML-Name)
	- unauthorized connection

2009-02-17  Kouhei Sutou  <kou@cozmixng.org>

	* TODO: add: milter-manager-log-analyzer supports [abort][%s].

2009-02-17  Kouhei Sutou  <kou@clear-code.com>

	* TODO: add:
	--rrddir? for covenience notation of --platform-optionns=rrddir=...

	* doc/reference/ja.po, libmilter/mfapi.h,
	milter/client/milter-client-context.c: improve document.

	* configure.ac: 0.8.1 -> 0.9.0.

	* milter/core/milter-reply-signals.[ch]: add abort signal.
	* milter/manager/milter-manager-children.c,
	milter/manager/milter-manager-children.c: use abort signal when no
	child milters respond to negotiation because the case MTA doesn't
	want to get any response.

	* test/manager/test-leader.c,
	test/fixtures/leader/negotiate-failure.txt: add a test for the
	above case.

	* test/manager/test-children.c: improve error message handling.

	* milter/manager/milter-manager-children.c
	(child_establish_connection): fix a bug that failing connection
	establishment causes no more processing.

2009-02-17  Kouhei Sutou  <kou@cozmixng.org>

	* doc/reference/ja.po: add translations.
	* milter/client/milter-client-context.c: improve document.
	* doc/reference/milter-manager.types: add.

	* doc/reference/ja.po: remove fuzzy.

2009-02-16  Kouhei Sutou  <kou@cozmixng.org>

	* doc/reference/ja.po: add translations.
	* milter/client.h,
	milter/client/milter-client-context.h: improve document.

	* doc/reference/ja.po: add translations.
	* milter/client.h: improve document.

	* doc/reference/ja.po: add translations.
	* libmilter/mfapi.h: improve document.

2009-02-16  Kouhei Sutou  <kou@clear-code.com>

	* doc/reference/ja.po: add translations.
	* libmilter/mfapi.h,
	milter/client/milter-client-context.c: fix typos.

	* milter/manager/milter-manager-children.c,
	test/manager/test-children.c,
	test/fixtures/leader/envelope-recipient-temporary-failure.txt,
	test/fixtures/leader/envelope-from-reject-and-discard.txt: fix
	status priority order.

	* milter/manager/milter-manager-children.c (cb_error): use
	fallback status not reject.

	* doc/reference/ja.po: add translations.
	* libmilter/mfapi.h: fix a typo.

	* doc/reference/ja.po: add translations.
	* libmilter/mfapi.h: improve document.

	* doc/reference/milter-manager-docs.sgml: enable API reference.
	* doc/reference/milter-manager-sections.txt: update.

	* tool/milter-performance-check: extract mail address from From:,
	To:, Cc: header value.

	* doc/install-*to-ubuntu.rd*: add -y option to aptitude.

	* doc/introduction.rd*: improve document about speed.

2009-02-16  Kouhei Sutou  <kou@cozmixng.org>

	* milter/server/milter-{client,server}-context.h,
	doc/reference/milter-manager-docs.sgml: add document.

	* milter/client.h, milter/client/milter-client-context.h: add
	document.

2009-02-15  Kouhei Sutou  <kou@cozmixng.org>

	* milter/client.h: add document.

	* libmilter/mfapi.h: add document.

	* milter/client/milter-client-context.h: update document.

	* doc/reference/milter-manager-overrides.txt,
	doc/reference/milter-manager-sections.txt,
	libmilter/mfapi.h: update document.

	* libmilter/libmilter-compatible.c, libmilter/mfapi.h: fix document.

	* milter/client/milter-client-context.c,
	milter/manager/milter-manager-children.c,
	milter/manager/milter-manager-leader.c,
	test/manager/test-leader.c,
	test/fixtures/leader/end-of-message-reply-code-reject.txt,
	test/fixtures/leader/end-of-message-reply-code-temporary-failure.txt:
	support temporary failure reply code.

	* milter/server/milter-server-context.c: dispose connect watch
	callback on failure.

2009-02-15  Kouhei Sutou  <kou@clear-code.com>

	* doc/*: 0.8.0 -> 0.8.1.

	* doc/install-to-ubuntu.rd*: add SOCKET_GROUP.

2009-02-15  Kouhei Sutou  <kou@cozmixng.org>

	* milter/server/milter-server-context.c: use GIOChannel instead of
	using FD directory.

	* README*, tool/milter-performance-check: add --shuffle.

	* tool/milter-performance-check: show temporary failure mails too.

	* milter/client/milter-client-context.c,
	milter/manager/milter-manager-process-launcher.c: call parent's
	finished.

	* milter/server/milter-server-context.c: fix too much FD close.

	* tool/milter-performance-check: don't show needless information.

2009-02-14  Kouhei Sutou  <kou@clear-code.com>

	* tool/milter-performance-check: report slow mail fails and
	rejected mail files.

	* milter/manager/milter-manager-children.c (cb_continue): don't
	return response before all body responses are returned.

2009-02-13  Kouhei Sutou  <kou@clear-code.com>

	* doc/install-to-ubuntu.rd*: add needed configurations.

2009-02-13  Kouhei Sutou  <kou@cozmixng.org>

	* tool/milter-performance-check, README*: add --interval option.

2009-02-12  Kouhei Sutou  <kou@cozmixng.org>

	* milter/manager/milter-manager-leader.[ch] (reply): handle
	invalid state.

	* milter/server/milter-server-context.c (write_packet): send
	defined macro command with actual command in a packet. This change
	very improve performance.

2009-02-12  Kouhei Sutou  <kou@clear-code.com>

	* admin/app/controllers/application.rb: pass exception object.

	* milter/core/milter-{agent,writer}.[ch]: export flush.

	* milter/manager/milter-manager-children.c: log skip.

	* milter/manager/milter-manager-children.c
	(emit_replace_body_signal): add missing priv get.

2009-02-11  Kouhei Sutou  <kou@cozmixng.org>

	* milter/manager/milter-manager-children.c: handle small body content on
	memory.

2009-02-10  Kouhei Sutou  <kou@clear-code.com>

	* data/defaults/*.conf: use unauthenticated applicable condition.

	* data/applicable-conditions/authentication.conf: add new
	applicable conditions to stop a milter when sender is
	authenticated or unauthenticated.

	* binding/ruby/lib/milter/manager/child-context.rb,
	binding/ruby/test/manager/test-child-context.rb,
	doc/configuration.rd*: authorized? -> authenticated?.

	* binding/ruby/src/toolkit/rb-milter-protocol-agent.c,
	binding/ruby/src/toolkit/rb-milter-core-private.h: accept nil for
	macro value.

	* binding/ruby/lib/milter/manager/child-context.rb,
	binding/ruby/test/manager/test-child-context.rb,
	doc/configuration.rd*: add Milter::Manager::ChildContext#authorized?.

	* doc/configuration.rd: translate.

	* data/applicable-conditions/sendmail-compatible.conf: add a new
	applicable condition to use a milter that depends on Sendmail with
	Postfix.

	* binding/ruby/test/manager/test-child-context.rb,
	binding/ruby/test/manager/test-child-context.rb,
	doc/configuration.rd.ja: add
	Milter::Manager::ChildContext#postfix?.

	* doc/install-to-ubuntu.rd*: add workaround for milter-greylist
	package in 8.04.

2009-02-09  Kouhei Sutou  <kou@cozmixng.org>

	* milter/client/milter-client.c (process_client_channel): start
	client as soon as possible.

	* milter/core/milter-reader.c: delay watch func removing.

2009-02-09  Kouhei Sutou  <kou@clear-code.com>

	* doc/configuration.rd: add document for controller.

	* milter/core/milter-reader.c: avoid reading after shutdown.

	* tool/milter-performance-check: improve output format.

	* binding/ruby/test/manager/test-*-detector.rb: follow the recent
	init file change.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-configuration-loader.rb,
	doc/configuration.rd*: add defined_milters.

	* tool/milter-performance-check
	(MilterPerformanceTool#parse_period): fix too much grouping.
	(MilterPerformanceTool#report): fix wrong unit.
	(MilterPerformanceTool#send_mails_in_period): fix inverted expression.
	(MilterPerformanceTool#report): fix wrong unit.

	* test/manager/test-manager.c (test_unknown_option): add
	--socket-group-name option.

2009-02-08  Kouhei Sutou  <kou@cozmixng.org>

	* TODO:
	- remove: support socket group separated by effective group.
	- add: support connection socket group separated by effective group.

	* data/init.d/redhat/milter-manager,
	data/init.d/debian/milter-manager,
	data/rc.d/milter-manager: support --socket-group-name option.

	* milter/manager/milter-manager-main.c, README*: add
	--socket-group-name option.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-configuration-loader.rb,
	binding/ruby/test/manager/test-configuration.rb,
	doc/configuration.rd*,
	data/milter-manager.conf: add manager.unix_socket_group.

	* milter/manager/milter-manager.c: support changing UNIX socket group.

	* milter/client/milter-client.c,
	milter/client.h,
	test/client/test-client.c: support changing UNIX socket group.

	* doc/poster-for-explanation-ja.svg: use free fonts.

	* milter/manager/milter-manager-configuration.[ch],
	test/manager/test-configuration.c: add UNIX socket group for manager.

	* TODO: remove.
	- where cutsom.conf should be used? readable and writabe file has
	the highest priority?

	* html/milter-manager.css: remove unusable style.

	* doc/Makefile.am (EXTRA_DIST): add poster-for-explanation-ja.svg.

	* doc/poster-for-explanation-ja.svg: add.

2009-02-07  Kouhei Sutou  <kou@clear-code.com>

	* tool/milter-performance-check: improve report format.

	* tool/milter-performance-check: report details.

2009-02-06  Kouhei Sutou  <kou@clear-code.com>

	* tool/milter-performance-check: support collect test mails from
	directory.

	* tool/milter-performance-check: support from/recipient overriding.

	* tool/milter-performance-check: support reading test mail from local.

	* configure.ac: 0.8.0 -> 0.8.1.

	* gtk-doc.make: fix gtkdoc-rebase detection.

2009-02-05  Kouhei Sutou  <kou@clear-code.com>

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-custom-xml-loader.rb: support
	applicable conditions change.

	* doc/install-to-*: add missing build dependency packages.

	* binding/ruby/src/toolkit/rb-milter-logger.c,
	binding/ruby/lib/milter/toolkit.rb,
	binding/ruby/test/toolkit/test-logger.rb: add logger.

	* binding/ruby/lib/milter/manager.rb: use logger.

	* NEWS*: add entries for 0.8.0.

	* test/server/test-server-context-stop-signals.c: add tests for
	stoppers on DATA and end of header.

	* binding/ruby/lib/milter/manager/child-context.rb,
	binding/ruby/test/manager/test-child-context.rb: support set macro.

	* binding/ruby/lib/milter/manager.rb: guard exception raising in
	stopper callback.

	* milter/server/milter-server-context.c: set macro context before
	calling stop callback.
	* milter/server/milter-server-context.[ch]: add stoppers on DATA
	and end of header.

	* data/milter-manager.conf: disable sample configuration.

	* doc/install-to-*.rd*: 0.7.0 -> 0.8.0.

	* data/applicable-conditions/s25r.conf: update to S25R version
	2009/02/01.

	* admin/Makefile.am: add missing entries.
	* admin/test/run-test.sh: run 'rake db:migrate' before testing.

	* configure.ac: fix wrong variable.

	* doc/Makefile.am: add missing entries.

	* admin/Makefile.am: support 'make check.

	* admin/, doc/install-options-to*, README*: use exception
	notification gem not plugin because the package has too long file
	name...

	* doc/: add screenshot of milter manager admin.

	* admin/public/stylesheets/base.css: remove needless 100%.

	* doc/: add graphs generated by milter-manager-log-analyzer.

	* tool/milter-manager-log-analyzer: remove needless class.

	* tool/milter-manager-log-analyzer: remove needless codes.

	* tool/milter-manager-log-analyzer, README*: also work without
	RRDtool Ruby binding.

	* doc/install-options-to-*.rd*: add description about installing
	RRDtool.

2009-02-05  Kouhei Sutou  <kou@cozmixng.org>

	* tool/milter-manager-log-analyzer:
	- put last updated date as comment.
	- don't draw no data region.

2009-02-04  Kouhei Sutou  <kou@cozmixng.org>

	* tool/milter-manager-log-analyzer:
	- add a bit step for more high resolution.
	- fix total counting.
	- don't draw no data region.

2009-02-04  Kouhei Sutou  <kou@clear-code.com>

	* TODO: remove:
	- add init script for FreeBSD and Ubuntu.
	- add default milter configurations to data/milters/*.conf.
	- mention GPL license in src/*.c, tool/*.

	* doc/reference/: register install-to-others.

	* doc/configuration.rd*: add package.* items.

	* doc/install-to-others.rd: translate.

	* binding/ruby/lib/milter/manager/pkgsrc-rc-detector.rb: use
	/usr/pkg/etc as prefix.

	* configure.ac: fix a typo.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/lib/milter/manager/detector.rb,
	binding/ruby/test/manager/test-configuration-loader.rb: add
	package configuration API.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-configuration.rb: show package
	related configurations.

	* doc/install-to-others.rd.ja: add.

	* configure.ac: show configure result at last.

	* binding/ruby/lib/milter/manager/detector.rb,
	binding/ruby/test/manager/test-detector.rb,
	binding/ruby/lib/milter/manager/pkgsrc-rc-detector.rb: use package
	options for determining where rc.d is.

	* data/defaults/pkgsrc.conf, data/defaults/Makefile.am: add a
	detector for pkgsrc.

	* TODO: remove:
	support milter's in pkgsrc:
	http://pkgsrc.se/dependon.php?path=mail/libmilter&branch=CURRENT

	* TODO: remove: detect OS/distribution when configure not dynamic
	by Ruby.

	* binding/ruby/test/manager/test-*-detector.rb,
	data/defaults/*.conf: pass configuration.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/lib/milter/manager/enma-socket-detector.rb,
	binding/ruby/lib/milter/manager/pkgsrc-rc-detector.rb:
	PkgsrcRCDetector provides enma's connection spec detect feature.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-configuration.rb: use
	@configuration.package_platform instead of guess_platform.

	* configure.ac, milter/manager/milter-manager-configuration.[ch],
	test/manager/test-configuration.c: add --with-package-platform and
	--with-package-options.

	* configure.ac, **/Makefile.am: cleanup dependencies.

2009-02-04  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/lib/milter/manager/,
	binding/ruby/test/manager/test-pkgsrc-rc-detector.rb: add enma
	socket detector.

	* binding/ruby/lib/milter/manager/pkgsrc-rc-detector.rb,
	binding/ruby/test/manager/test-pkgsrc-rc-detector.rb: add pkgsrc
	system support.
	* binding/ruby/lib/milter/manager/*detector.rb: follow the above change.

2009-02-03  Kouhei Sutou  <kou@clear-code.com>

	* binding/ruby/lib/milter/manager/:
	- add PkgsrcRCDetector but not implemented yet.
	- rename BSDRCDetector to FreeBSDRDDetector.
	* binding/ruby/test/manager/, data/default/freebsd.conf: follow
	the above change.

	* html/milter-manager.css: add margin to html.

	* html/Makefile.am: don't upload *.svg.

	* html/index.html*: add sponsor notation.

	* html/milter-manager.css, html/logo.svg,
	html/what-is-miter-manager.svg: add.

	* README: translate.

	* README*: fix license section.

	* doc/install.rd: translate.

	* doc/install-to-centos.rd: translate.

2009-02-02  Kouhei Sutou  <kou@clear-code.com>

	* doc/install-to-centos.rd: translate partially.

	* doc/install-options-to-centos.rd.ja: remove needless description.
	* doc/install-options-to-cents.rd: translate.

	* admin/config/locales/ja.yml: update messages.

	* doc/install-{,options-}to-centos.rd.ja: add missing descriptions.

	* doc/install-options-to-{freebsd,ubuntu}.rd: translate.

	* admin/: update translations.

	* doc/install-options-to-centos.rd.ja: complete.

2009-02-01  Kouhei Sutou  <kou@cozmixng.org>

	* doc/*.rd*: add "about this document" section.

	* doc/install-options-*.rd: add empty English documents.
	* doc/reference/milter-manager-docs.sgml: register optional
	installation documents.

	* doc/mta-and-milter-manager-and-child-milter*.svg: add images for
	relation between MTA, milter manager and child milter.
	* doc/introduction.rd*, doc/reference/: use the above images.

	* doc/introduction.rd*: add image link.
	* gtk-doc.make, doc/reference/Makefile.am: generate PNG from SVG.

	* doc/*.svg: add English version.

	* tool/milter-manager-log-analyzer: define RRD.last_update_time
	for buggy RRDtool bindings.

	* test/fixtures/leader/connect.txt,
	test/fixtures/leader/connect-with-macro.txt: follow socket address
	format fixing.

	* tool/milter-manager-log-analyzer: fix syslog date format matching.

	* doc/sendmail-and-postfix-and-milter.svg, doc/introduction.rd.ja:
	add a image for Sendmail, Postfix and milter.

	* doc/sendmail-and-milter.svg, doc/introduction.rd.ja: add a image
	for Sendmail and milter.

	* doc/configuration.rd.ja: complete.

	* binding/ruby/src/toolkit/rb-milter-socket-address.c,
	binding/ruby/test/toolkit/test-socket-address.rb: add missing '[]'
	around address.

	* binding/ruby/src/toolkit/rb-milter-core-private.c,
	binding/ruby/src/toolkit/rb-milter-socket-address.c,
	binding/ruby/test/manager/test-child-context.rb,
	binding/ruby/test/toolkit/test-socket-address.rb,
	binding/ruby/lib/milter/toolkit.rb: host -> address.

	* binding/ruby/lib/milter/manager/child-context.rb: normalize
	macro name for convenient.

	* milter/core/milter-agent.c: make decoder property.

	* binding/ruby/lib/milter/manager.rb: make child context brief.

	* binding/ruby/lib/milter/manager/child-context.rb,
	binding/ruby/test/manager/test-child-context.rb: add quitted?.

	* binding/ruby/src/manager/rb-milter-manager-children.c: bind get
	children related functions.

	* binding/ruby/src/toolkit/rb-milter-agent.c: add.

	* milter/core/milter-agent.c: milter-reader -> reader.

	* milter/manager/milter-manager-children.[ch],
	test/manager/test-children.c: make quitted milter public.

2009-01-31  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/lib/milter/manager/child-context.rb,
	binding/ruby/test/manager/test-child-context.rb: add status
	related methods.

	* milter/server/milter-server-context.[ch],
	tool/milter-test-server.c,
	test/server/test-server-context-signals.c: server context holds
	its status.

	* binding/ruby/src/toolkit/rb-milter-protocol-agent.c: bind some
	macro related functions.

	* binding/ruby/lib/milter/manager/child-context.rb,
	binding/ruby/test/manager/test-child-context.rb: provide macro reader.

	* milter/core/milter-protocol-agent.c: fix macro search order.

	* milter/core/milter-protocol-agent.c: make macro-context property.

	* binding/ruby/lib/milter/manager/child-context.rb,
	binding/ruby/test/manager/test-child-context.rb: add child context
	for stopper.

	* binding/ruby/src/manager/rb-milter-manager-children.c: bind some
	functions for child context.

	* binding/ruby/lib/milter/manager.rb: use child context not child.

	* binding/ruby/test/manager/test-configuration-loader.rb,
	binding/ruby/test/manager/test-configuration-loader.rb,
	data/applicable-conditions/s25r.conf: follow new API.

	* milter/manager/milter-manager-applicable-condition.[ch],
	milter/manager/milter-manager-children.[ch],
	milter/manager/milter-manager-egg.[ch],
	milter/manager/milter-manager-configuration.c,
	milter/manager/milter-manager-objects.h,
	test/manager/test-egg.c,
	test/manager/test-configuration.c: pass children to applicable
	condition's attach-to signal.

	* README*: add licenses for Rails plugins.

	* admin/Makefile.am, admin/vendor/plugins/exception_notification/,
	admin/vendor/plugins/exc-notify: shorten name to be able to
	include in tar ball.

	* admin/app/controllers/application.rb,
	admin/vendor/plugins/exception_notification/lib/exception_notifiable.rb:
	integrated with exception notification.

	* admin/vendor/plugins/exception_notification/: import exception
	notification.

	* admin/app/controllers/application.rb: don't log password related
	parameters.

	* doc/install-options-to-freebsd.rd.ja: complete.

	* admin/app/helpers/config_helper.rb: show "unix" spec type by
	default.

	* data/cron.d/freebsd/: add crontab for
	milter-manager-log-analyzer on FreeBSD.

2009-01-28  Kouhei Sutou  <kou@cozmixng.org>

	* doc/configuration.rd.ja: describe define_applicable_condition.

	* doc/configuration.rd.ja: describe controller.*.

2009-01-28  Kouhei Sutou  <kou@clear-code.com>

	* doc/install*: update.

	* data/cron.d/debian/milter-manager-log,
	data/cron.d/redhat/milter-manager-log: use -c option.

	* data/rc.d/milter-manager: use milter-manager user by default.

	* doc/install.rd.ja, doc/install-options-to-ubuntu.rd.ja: add
	milter manager admin.

	* milter/manager/milter-manager-main.c: use ~/.milter-manager/ for
	user local configuration.

	* admin/: allow duplicated NULL emails.

	* admin/: don't allow signup when no login.

	* admin/: don't link signup in signup page.

	* admin/: show details on error.

	* admin/config/environment.rb: create log directory unless exists.

2009-01-27  Kouhei Sutou  <kou@clear-code.com>

	* doc/install.rd.ja: move Ubuntu related descriptions to ...
	* doc/install-options-to-ubuntu.rd.ja: ... here.

	* admin/app/: add error pages.

	* admin/db/sqlite3/: add a directory for database files of SQLite3.

	* configure.ac, Makefile.am, admin/Makefile.am: dist and install admin.

2009-01-21  Kouhei Sutou  <kou@cozmixng.org>

	* TODO: remove: consider header-lead-space negotiate in
	{add,insert,change}-header.

	* milter/manager/milter-manager-children.c: consider leading-space.
	* test/fixtures/leader/change-header-with-leading-space.txt: fix
	meaningless test.

2009-01-21  Kouhei Sutou  <kou@clear-code.com>

	* doc/install.rd.ja: add description for
	milter-manager-log-analyzer but it's not completed yet.

	* data/cron.d/: split file for Ubuntu and CentOS.

	* data/cron.d/milter-manager-log: add.

	* README.ja: add milter-manager-log-analyzer.

	* tool/milter-manager-log-analyzer: --rrd-directory ->
	--output-directory.

	* tool/milter-manager-log-analyzer:
	- rename from milter-log-tool.
	- merge tool/ruby/milter-rrd.rb.

	* milter/manager/milter-manager-children.c,
	test/fixtures/leader/header-with-leading-space-no-space.txt,
	test/fixtures/leader/header-with-leading-space.txt,
	test/lib/milter-manager-test-client.c,
	test/manager/test-leader.c: remove leading space for non leading
	space mode milter.

	* milter/manager/milter-manager-children.c,
	test/fixtures/leader/change-header-with-leading-space.txt,
	test/fixtures/leader/insert-header-with-leading-space.txt,
	test/manager/test-leader.c: add leading space for non leading
	space mode milter.

	* milter/manager/milter-manager-children.c,
	test/fixtures/leader/add-header-with-leading-space.txt,
	test/fixtures/leader/add-header.txt,
	test/lib/milter-manager-test-scenario.c,
	test/manager/test-leader.c: add leading space for non leading
	space mode milter.

	* test/lib/milter-manager-test-scenario.[ch],
	test/manager/test-children.c, test/manager/test-leader.c: support
	overriding negotiate option.

	* milter/core/milter-option.h:
	MILTER_STEP_HEADER_LEAD_SPACE ->
	MILTER_STEP_HEADER_VALUE_WITH_LEADING_SPACE.
	* milter/core/milter-option.c,
	milter/client/milter-client-context.c,
	tool/milter-test-server.c: follow the above change.

	* doc/install-to-centos.rd.ja: add description for detecting
	enabled.

	* binding/ruby/lib/milter/manager/redhat-init-detector.rb,
	binding/ruby/test/manager/test-redhat-init-detector.rb: check
	/etc/rcX.d/* for detecting whether enabled or disabled.

	* binding/ruby/lib/milter/manager/init-detector.rb: add
	init_base_dir.
	* binding/ruby/test/manager/test-debian-init-detector.rb: follow
	the above change.

2009-01-20  Kouhei Sutou  <kou@cozmixng.org>

	* test/tool/test-server.c (cb_negotiate): use milter protocol 8.

2009-01-20  Kouhei Sutou  <kou@clear-code.com>

	* tool/milter-test-server.c: data command requires milter
	protocol version > 2.

	* doc/install-to-centos.rd.ja: add.
	* doc/install.rd.ja: add a link to the above document.

	* binding/ruby/lib/milter/manager.rb: keep reference of loaded
	configuration to guard from Ruby's GC.

	* test/server/test-server-context-signals.c (test_busy_error):
	remove needless variable.

	* test/fixtures/leader/Makefile.am (EXTRA_DIST): add missing file.

	* milter/manager/milter-manager-children.c,
	test/manager/test-leader.c,
	test/fixtures/leader/data-close-without-reply.txt,
	test/lib/milter-test-client.rb: handle unexpected finished case:
	finish without receiving response.

	* milter/manager/milter-manager-configuration.c,
	test/manager/test-configuration.c: make default fallback status
	accept instead of continue.

	* test/server/test-server-context-signals.c (test_busy_error):
	follow the below change.
	* milter/server/milter-server-context.[ch],
	test/server/test-server-context.c: export predicate that
	asks whether processing or not.

	* tool/milter-test-server.c, README*: add --negotiate-version
	option.

	* milter/core/milter-option.c, test/core/test-option.c: combining
	accepts older version.

	* TODO: add: support milter's in pkgsrc.

	* milter/server/milter-server-context.[ch],
	test/server/test-server-context-command.c: add error check for
	negotiate version mismatch.

	* milter/server/milter-server-context.c: use milter_option_inspect().

	* binding/ruby/lib/milter/manager/Makefile.am: add missing detector.rb.

	* TODO: add: detect OS/distribution when configure not dynamic by Ruby.

	* milter/client/milter-client-context.c,
	milter/server/milter-server-context.c,
	milter/manager/milter-manager.c: use milter_option_inspect().

	* doc/install-to-{ubuntu,freebsd}.*: fix typos.

	* milter/core/milter-option.[ch], test/core/test-option.c:
	add milter_option_inspect().

2009-01-19  Kouhei Sutou  <kou@clear-code.com>

	* binding/ruby/lib/milter/manager/detector.rb: add.
	* binding/ruby/lib/milter/manager/init-detector.rb,
	binding/ruby/lib/milter/manager/bsd-rc-detector.rb: use the above.

	* binding/ruby/lib/milter/manager/init-detector.rb: add.
	* binding/ruby/lib/milter/manager/debian-init-detector.rb,
	binding/ruby/lib/milter/manager/redhat-init-detector.rb: use the above.

	* bindings/ruby/lib/milter/manager.rb: split detector to ...
	* bindings/ruby/lib/milter/manager/: ... here.
	* binding/ruby/test/manager/, configure.ac, data/defaults/: follow
	the above change.

	* data/init.d/redhat/milter-manager: add missing ';;'.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-redhat-init-detector.rb: improve
	milter detection.

	* binding/ruby/lib/milter/manager.rb: fix a typo.

	* data/defaults/Makefile.am (dist_defaults_DATA): add redhat.conf.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-redhat-init-detector.rb,
	data/defaults/redhat.conf: add milter detector for RedHat family.
	Should be cleaned!

	* README*, NEWS*: add the below info.
	* configure.ac: fix typos: vender -> vendor. [#2518782]
	Reported by OBATA Akio. Thanks!!!

	* configure.ac, data/init.d/redhat/: add a init script for RedHat.

	* binding/ruby/test/manager/test-debian-init-detector.rb: fix path
	of Debian's milter-manager init script.

2009-01-18  Kouhei Sutou  <kou@cozmixng.org>

	* TODO: add: consider header-lead-space negotiate in
	{add,insert,change}-header.

2009-01-17  Kouhei Sutou  <kou@cozmixng.org>

	* milter/manager/milter-manager-children.c: check error for seek.

	* milter/manager/milter-manager-main.c: include missing string.h.

	* binding/ruby/lib/milter/manager.rb: guard stoppers from GC.

	* binding/ruby/src/manager/rb-milter-manager-configuration.c
	(mark): guard applicable conditions from GC.

	* milter/manager/milter-manager-children.c: fix too much unref.

	* milter/manager/milter-manager-main.c (milter_manager_main):
	force disable privilege mode if user isn't root.

2009-01-16  Kouhei Sutou  <kou@clear-code.com>

	* milter/**.c: improve log.

	* data/defaults/debian.conf, data/defaults/freebsd.conf: enable
	controller by default.

	* milter/manager/milter-manager-children.c: default
	retry_connect_timeout should be less than 10 seconds because write
	timeout is 10 seconds by default.

	* milter/manager/milter-manager-process-launcher.c,
	test/manager/test-process-launcher.c: accept launching
	without user change.

	* milter/manager/milter-manager-control-command-decoder.c: log.

	* milter/manager/milter-manager-launch-command-decoder.c,
	milter/manager/milter-manager-launch-command-encoder.c,
	test/manager/test-launch-command-decoder.c,
	test/manager/test-launch-command-encoder.c: user name is optional.

	* milter/manager/milter-manager-children.c,
	test/manager/test-children.c: improve log.

	* admin/TODO: add.

	* **/*: fix typos: mitler -> milter.

	* milter/server/milter-server-context.c (cb_decoder_accept): use
	nick name.

	* binding/ruby/src/toolkit/rb-milter.h (G_DEF_CLASS_WITH_GC_FUNC):
	support Ruby/GLib2 0.16.0.

	* binding/ruby/src/manager/rb-milter-manager-configuration.c: mark eggs.

	* configure.ac (contact address): kou@cozmixng.org ->
	milter-manager-users-en@lists.sourceforge.net.

	* configure.ac: 0.7.0 -> 0.8.0.

	* doc/install-to-freebsd.rd*: use fetch instead of wget on FreeBSD.

	* configure.ac, Makefile.am: fix project name.

	* Makefile.am (EXTRA_DIST): add NEWS*.

2009-01-15  Kouhei Sutou  <kou@clear-code.com>

	* Makefile.am, html/index.html*: support coverage upload.

	* doc/reference/Makefile.am (upload): add missing last '/'.

	* NEWS*: add.

	* doc/install-to*: add download URL.

	* html/: add.

	* doc/install-to-freebsd.rd*: use gmake.

	* README: remove garbages.

	* doc/reference/ja.po, doc/reference/milter-manager-docs.sgml:
	translate.

	* doc/introduction.rd: translate.

	* doc/install-to-freebsd.rd: translate.

2009-01-15  Kouhei Sutou  <kou@cozmixng.org>

	* doc/install-to-ubuntu.rd: translate.

	* doc/install.rd: translate.

	* doc/configuration.rd: translate.

	* README: translate.

2009-01-14  Kouhei Sutou  <kou@cozmixng.org>

	* doc/: generate HTML from RD.

	* milter/manager/milter-manager-children.c
	(clear_try_negotiate_data): expire child failed to connect.

	* doc/install-freebsd.rd.ja, doc/install-ubuntu.rd.ja: update.

	* milter/manager.h, milter/manager/milter-manager-main.c,
	src/milter-manager.c: consider return status.

	* milter/manager/milter-manager-children.c (expire_child): add
	NULL check.

	* tool/milter-test-server.c: send abort on exit by timeout.

	* module/configuration/ruby/milter-manager-ruby-configuration.c:
	reset poll function set by Ruby/GLib2 0.16.0.

	* tool/milter-test-server.c: handle timeout.

	* configure.ac, data/init.d/: move init script for Debian to
	data/init.d/debian/.

	* configure.ac: use RUBY_SO_NAME.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-debian-init-detector.rb: improve
	clamav-milter type socket detection.

	* binding/ruby/test/manager/test-bsd-rc-detector.rb: follow the
	recent changes.

	* test/run-test.sh: unset LANG.

2009-01-13  Kouhei Sutou  <kou@cozmixng.org>

	* data/defaults/debian.conf, data/defaults/freebsd.conf: improve
	milter apply order. milter-greylist should be applied in first
	because it may reject message.

	* TODO: add NOTE: getifaddrs(3) can be used to determine local network.

	* test/lib/milter-test-client.rb: resolve flags value by myself
	not using Ruby/GLib2's feature because we should support older
	Ruby/GLib2.

	* configure.ac: check Ruby availability.

	* README.ja: add FreeBSD.

	* doc/install-freebsd.rd.ja: complete.

	* milter/manager/milter-manager-children.c: also emit finished on
	expire all children because server doesn't send quit on replying
	reject, temporary-failure and discard.

	* test/manager/test-manager.c (wait_for_reaping): add a message
	for debugging.

	* data/rc.d/milter-manager: add milter_manager_debug option.

	* milter/manager/milter-manager-main.c, README.ja,
	test/manager/test-manager.c: add --no-daemon option.

	* tool/ruby/milter-rrd.rb: improve message.

	* tool/milter-test-server.c: improve output format.
	* test/tool/test-server.c, test/manager/test-manager.c,
	test/fixtures/manager/: follow the above change.

	* TODO: add: support socket group separated by effective group.

	* TODO: add: add default applicable conditions: unauthorized connection.

	* data/applicable-conditions/s25r.conf: add unresolved address.

	* milter/manager/milter-manager-main.c: don't use
	g_option_context_get_help() on CentOS. It's available since GLib 2.14.

	* milter/manager/milter-manager-children.c: wait for quit command
	before finished.

	* milter/core/milter-command-decoder.c: log decoded commands.

2009-01-12  Kouhei Sutou  <kou@cozmixng.org>

	* doc/install-freebsd.rd.ja: add.

	* milter/core/milter-command-decoder.c (check_macro_context):
	support define macro on unknown command.

	* configure.ac: Cutter 1.0.6 is required.

	* data/defaults/debian.conf, data/defaults/freebsd.conf: spam
	filter is enabled only for remote network but virus filter is
	always enabled.

	* milter/client/milter-client-context.c: fix memory leaks.

	* milter/core/milter-reply-decoder.c,
	milter/manager/milter-manager.c: improve log format.

	* test/lib/milter-manager-test-client.[ch]
	(milter_manager_test_client_assert_nothing_output): add.

	* milter/manager/milter-manager-children.c: send quit to
	a milter that replied end-of-message immediately.
	* test/manager/test-leader.c,
	test/fixtures/leader/abort-on-end-of-message.txt: follow the above
	change.

	* milter/manager/milter-manager-children.c: use children's state
	not server context's state.

	* milter/manager/milter-manager-children.c:
	- fix the last response handling.
	- improve log format.

	* milter/manager/milter-manager-children.c,
	milter/manager/milter-manager-leader.c,
	test/manager/test-children.c: improve log format.

	* milter/manager/milter-manager-children.c,
	milter/server/milter-server-context.c,
	test/server/test-server-context-signals.c: improve log format.

	* data/defaults/debian.conf: add missing dkim-filter detection.

	* data/defaults/: use Remote Network condition.

	* data/applicable-conditions/remote-network.conf: use local?.

	* binding/ruby/lib/milter/toolkit.rb,
	binding/ruby/test/toolkit/test-socket-address.rb: add local?.

	* tool/milter-log-tool, tool/ruby/milter-rrd.rb: follow the below
	changes.

	* milter/server/milter-server-context.[ch]:
	- check-XXX -> stop-on-XXX.
	- passed -> stopped.
	* milter/manager/milter-manager-children.c,
	test/manager/, test/server/, data/applicable-conditions/,
	binding/ruby/lib/milter/manager.rb,
	binding/ruby/src/toolkit/rb-milter-server-context.c,
	binding/ruby/test/: follow the above changes.

2009-01-11  Kouhei Sutou  <kou@cozmixng.org>

	* milter/server/milter-server-context.c (pass_state): improve log format.

	* tool/ruby/milter-rrd.rb: cleanup.

2009-01-10  Kouhei Sutou  <kou@cozmixng.org>

	* tool/ruby/milter-rrd.rb: use String instead of Integer for
	avoiding overflow.

	* tool/milter-log-tool, tool/ruby/milter-rrd.rb: show correct range.

	* tool/ruby/milter-rrd.rb: follow the recent log change.

	* milter/client/milter-client-context.c: improve log format.

	* tool/milter-log-tool: parse syslog format.
	* tool/ruby/milter-rrd.rb: support new statistics format.

	* milter/server/milter-server-context.c: improve log format.

	* milter/manager/milter-manager-children.c: measure elapsed time
	for each milter.

	* milter/client/milter-client-context.c,
	milter/manager/milter-manager-children.c,
	milter/manager/milter-manager-leader.c,
	milter/manager/milter-manager.c,
	milter/server/milter-server-context.c: improve log format.

	* milter/manager/milter-manager-children.c: remove needless error check.

	* test/manager/test-children.c: follow the recent changes.

	* milter/manager/milter-manager-children.c: remove needless code.

	* milter/server/milter-server-context.c,
	manager/milter-manager-children.c: add server: and children:
	prefix to tag name.

	* milter/core/milter-syslog-logger.c,
	test/core/test-syslog-logger.c: use
	[statistics] tag instead of time-stamp.

	* README.ja, doc/install-ubuntu.rd.ja, doc/install.rd.ja,
	doc/introduction.rd.ja: add documentations.

2009-01-08  Kouhei Sutou  <kou@cozmixng.org>

	* milter/manager/milter-manager-children.c
	(send_command_to_first_waiting_child, send_command_to_child),
	(send_next_header_to_child, send_body_to_child),
	(send_next_command): return MilterStatus instead of gboolean.
	(cb_continue): use MilterStauts.

	* tool/ruby/milter-rrd.rb: use 0 not "U" for empty data.

	* tool/ruby/milter-rrd.rb: fix number of total.

	* libmilter/libmilter-compatible.[ch],
	test/libmilter/test-smfi-context.c: fix memory leak.

	* tool/ruby/milter-rrd.rb: add fallback for RRDtool binding.

	* tool/milter-log-tool: use relative path.

	* tool/milter-performance-check: fix wrong require.

	* milter/manager/milter-manager.c: don't ignore client context's
	finished to detect QUIT from MTA.

2009-01-07  Kouhei Sutou  <kou@cozmixng.org>

	* tool/milter-log-tool: fix label. (just workaround...)

	* milter/server/milter-server-context.h
	(MILTER_SERVER_CONTEXT_DEFAULT_END_OF_MESSAGE_TIMEOUT): 200 -> 300
	to adjust Sendmail's default.

	* tool/ruby/milter-rrd.rb: add text for statistics.

	* tool/milter-log-tool: add refresh.

	* tool/ruby/milter-rrd.rb: count processed mail on envelope-recipient.

	* tool/milter-log-tool, tool/ruby/milter-rrd.rb: output HTML for images.

	* tool/Makefile.am: don't install milter-log-tool.

	* milter/manager/milter-manager-controller.c,
	test/manager/test-controller.c: fix SEGV bug on error.

	* milter/manager/milter-manager-configuration.c: config -> configuration.

	* milter/manager/milter-manager.c: [milter-manager] -> [manager].

	* binding/ruby/lib/milter/manager.rb: improve error message.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-custom-xml-loader.rb: support
	command and command options in custom XML loading.

	* milter/manager/milter-manager-egg.c,
	test/manager/test-configuration.c: add command-options to XML.

	* milter/manager/milter-manager-main.c: controller should be
	started after daemonize() because daemonize() may fork().

	* milter/manager/milter-manager-configuration.c: improve error
	message format.

	* TODO: add: * if all alive child milters don't need to receive
	the command, children do nothing and leader returns response
	immediately not returning PROGRESS. For example:

	* milter/manager/milter-manager-main.c
	(process_controller_connection): add missing milter_agent_start().

2009-01-06  Kouhei Sutou  <kou@cozmixng.org>

	* milter/manager/milter-manager-children.c: fix typos.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-bsd-rc-detector.rb,
	binding/ruby/test/manager/test-debian-init-detector.rb: use
	@script_name not @name for milter name.

	* tool/milter-test-server.c: treat /path/to/socket as
	unix:/path/to/socket for convenience.

	* milter/manager/milter-manager-children.c: expire negotiate
	failed child.

	* milter/manager/milter-manager.c: log at each callback.

	* milter/client/milter-client-context.c (negotiate_response): log
	inspected option.

	* milter/manager/milter-manager-children.c
	(milter_manager_children_negotiate): push all milters before
	action to avoid replying before all responses are collected.

	* milter/client/milter-client-context.c (negotiate_response): add
	missing REPLY in log message.

	* binding/ruby/lib/milter/manager.rb
	(ConfigurationLoader::DebianInitDetector#extract_variables):
	support comment.
	(ConfigurationLoader::DebianInitDetector#default_conf): use
	@script_name not @name.

	* data/defaults/debian.conf: add a default configuration for Debian.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-debian-init-detector.rb: partially
	support spamass-milter style on Debian.

	* binding/ruby/test/toolkit/test-server-context.rb: follow the
	recent server context's check-* callback changes.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-debian-init-detector.rb,
	data/init.d/milter-manager: add Debian's init script detector.

	* binding/ruby/lib/milter/manager.rb: add missing block check.

	* data/init.d/milter-manager: add a init script for Debian.

	* binding/ruby/lib/milter/manager.rb
	(ConfigurationLoader::BSDRCDetector#apply): support customize in block.

	* data/defaults/freebsd.conf: use S25R for milter-greylist by
	default.

	* milter/client/milter-client-context.c: disable timeout before
	writing new packet.

	* milter/client/milter-client.c: add more information for client
	process on start/finish.

	* milter/core/miter-utils.[ch], test/core/test-utils.c: add
	milter_utils_inspect_list_pointer().

2009-01-06  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* milter/manager/milter-manager-children.c: Fix OR confusion.
	* milter/manager/milter-manager-children.c: Fix AND confusion.
	* milter/core/milter-agent.c (cb_reader_finished): Invoke
	milter_agent_set_reader before emitting "finished" signal.

2009-01-06  Kouhei Sutou  <kou@cozmixng.org>

	* milter/server/milter-server-context.[ch],
	test/server/test-server-context-check-signals.c: emit "passed"
	signal instead of "accept" signal on "check-*" callbacks return
	TRUE. The next action (e.g. "accept") should be decided in each
	use-case.
	* milter/manager/milter-manager-children.c: follow the above
	change; treat response is "accept" and abort the child milter on
	"passed".

	* milter/manager/milter-manager-leader.c (cb_error): improve error
	message.

	* po/POTFILES.in: remove a needless file.

	* milter/core/milter-reader.c (channel_watch_func): ignore invalid
	state error for reader if shutdown is requested.

	* test/core/test-syslog-logger.c: suppress output from default logger.

2009-01-05  Kouhei Sutou  <kou@cozmixng.org>

	* tool/milter-log-tool, tool/ruby/milter-rrd.rb: use stream
	parsing for scaling.

	* test/core/test-syslog-logger.c: follow the recent syslog logger change.

	* tool/ruby/milter-rrd.rb: cleanup.

	* milter/core/milter-syslog-logger.c (cb_log): don't log except
	statics by default.

	* README.ja, doc/introduction.rd.ja: minor improvements.

	* Makefile.am (update-po): include module/ and tool/.

	* po/POTFILES.in: update.

	* binding/ruby/Makefile.am (EXTRA_DIST): add test-unit files.

	* test/tool/fixtures/Makefile.am (EXTRA_DIST): add a missing file.

	* configure.ac, test/: add missing files.

	* binding/ruby/test/Makefile.am: add a missing file.

	* Makefile.am, configure.ac: add misc/.

	* data/**/Makefile.am: distributes missing files.

	* tool/Makefile.am: distributes missing files.

	* tool/ruby/Makefile.am: distributes missing files.

	* binding/ruby/lib/Makefile.am,
	binding/ruby/lib/milter/Makefile.am: distributes missing files.

	* libmilter/Makefile.am: add a missing file.

	* milter/Makefile.am: add missing files.

	* Makefile.am: add missing directories.

	* configure.ac: 0.0.1 -> 0.7.0.

	* config/, build/, configure.ac: use config/ instead of build/ for
	auxiliary directory.

	* binding/ruby/test/Makefile.am,
	binding/ruby/test/toolkit/Makefile.am,
	binding/ruby/test/manager/Makefile.am: add missing files.

	* README.ja, doc/: setup documentation environment.

2009-01-05  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* milter/manager/milter-manager-main.c: fix memory leak.
	* tool/milter-test-server.c (cb_error): Invoke milter_agent_shutdown
	instead of send_abort() to prevent infinite loop.

2009-01-04  Kouhei Sutou  <kou@cozmixng.org>

	* INTRODUCTION.ja: describe merit of auto milter detection.

	* doc/configuration.rd.ja: add.

	* data/milter-manager.conf: add default configurations in comment.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-configuration.rb: improve dumped
	configuration format.

	* milter/manager/milter-manager-configuration.c,
	test/manager/test-configuration.c: set default manager connection
	spec as inet:10025@[127.0.0.1].

	* binding/ruby/lib/milter/manager.rb (Milter::Configuration#dump):
	swap manager and controller order.

	* tool/milter-test-client.c: --connection-spec is optional.

	* milter/client/milter-client.c (get_default_connection_spec):
	make default connection spec more strict:
	inet:10025 -> inet:10025@[127.0.0.1].

	* README.ja: describe milter-test-client and milter-performance-check.

	* tool/milter-performance-check, tool/milter-test-client.c:
	improve command line option.

	* tool/milter-test-server.c,
	test/milter-test-server.c: improve command line option.

	* README.ja: describe milter-test-server.

	* milter/manager/milter-manager-main.c,
	test/manager/test-manager.c,
	tool/milter-test-server.c,
	tool/milter-test-client.c: improve command line option.

	* README.ja: describe options.

	* milter/manager/milter-manager-main.c,
	test/manager/test-manager.c: --spec -> --connection-spec.

	* README.ja: add merits of milter-manager.

	* ./: mention and fix license.

	* TODO: add: where cutsom.conf should be used? readable and
	writabe file has the highest priority?

	* README.ja, license/: add license text.

	* milter/server/milter-server-context.c,
	milter/manager/milter-manager-children.c: improve messages.

	* milter/manager/milter-manager-children.c,
	test/manager/test-children.c: improve error message.

	* milter/manager/milter-manager-main.c: don't log if controller
	connection is disabled.

	* binding/ruby/test/toolkit/test-command-encoder.rb: follow the
	recent command encoder change.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-configuration.rb,
	binding/ruby/test/manager/test-configuration-loader.rb: support
	remove UNIX socket on create configuration from file.

	* milter/manager/milter-manager-configuration.[ch],
	test/manager/test-configuration.c: add
	milter_manager_configuration_is_remove_manager_unix_socket_on_create(),
	milter_manager_configuration_set_remove_manager_unix_socket_on_create(),
	milter_manager_configuration_is_remove_controller_unix_socket_on_create()
	and
	milter_manager_configuration_set_remove_controller_unix_socket_on_create().

	* milter/client.h, milter/client/milter-client.c,
	test/client/test-client.c: add
	milter_client_is_remove_unix_socket_on_create() and
	milter_client_set_remove_unix_socket_on_create().

	* milter/core/milter-connection.[ch], test/core/test-connection.c:
	milter_connection_listen() supports removing existing UNIX socket
	before bind().
	* libmilter/libmilter-compatible.c, milter/client.h,
	milter/client/milter-client.c,
	milter/manager/milter-manager-main.c: follow the above change.

	* milter/core/milter-protocol-agent.[ch]
	(milter_protocol_agent_get_available_macros): add.

	* milter/core/milter-protocol-agent.[ch],
	milter/client/milter-client-context.c,
	test/client/test-client-context-callback.c:
	milter_protocol_agent_get_macros() should be able to get macro
	values set at the prior contexts.

	* milter/core/milter-utils.[ch],
	test/core/test-utils.c: add milter_utils_merge_hash_string_string().

2009-01-03  Kouhei Sutou  <kou@cozmixng.org>

	* milter/core/milter-command-encoder.c,
	test/core/test-command-encoder.c: encoded macro name should be
	surrounded with "{" and "}" if the name length is more than 1.

	* milter/server/milter-server-context.c (write_macro): log sent macros.

	* milter/core/milter-utils.[ch], test/core/test-utils.c:
	add inspect_hash_string_string_element().

	* TODO: add: bug? milter-manager sometimes doesn't finish child milter?

	* milter/manager/milter-manager.c: improve name.

	* tool/milter-test-client.c:
	- print macros.
	- remove NO_* steps to handle all events.

	* milter/core/milter-command-decoder.c,
	test/core/test-command-decoder.c: support macro context on DATA.

	* data/defaults/freebsd.conf: controller connection spec is
	disabled for now.

	* milter/core/milter-agent.c, milter/core/milter-writer.[ch]:
	handle writer channel error case. (maybe work)

	* milter/core/milter-utils.h: include missing
	milter-finished-emittable.h.

	* test/manager/test-manager.c: detect milter-manager program name.

	* milter/manager/milter-manager-main.c: fix a memory leak.

	* test/manager/test-manager.c (wait_for_manager_ready): add more
	information.

	* test/manager/test-process-launcher.c (setup): add missing
	variables initialization.

	* milter/manager/milter-manager-main.c,
	test/manager/test-manager.c: implicit help text showing is done
	only when unknown option is specified.

	* milter/manager/milter-manager-main.c (milter_manager_main): add
	--verbose option.
	(milter_manager_init): show help text on unknown option passed.

2009-01-02  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/test/manager/test-configuration-loader.rb
	(TestConfigurationLoader#test_define_milter_again): add test for
	enabled.

	* data/rc.d/milter-manager (extra_commands): support reload.

	* data/rc.d/Makefile.am: data/rc.d/milter-manager is executable.

	* binding/ruby/lib/milter/manager.rb (Shellwords): backport
	Shellwords methods from ruby 1.8.7.

	* milter/manager/milter-manager-configuration.[ch],
	module/configuration/ruby/milter-manager-ruby-configuration.c,
	binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-configuration.rb: support
	configuration dumping.

	* milter/manager/milter-manager-main.c: add --show-config option.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-configuration-loader.rb: support
	milter.applicable_conditions=.

	* TODO: remove: change process name of forked process launcher.

	* data/milter-manager.conf, data/defaults/freebsd.conf: add
	default configuration file for FreeBSD.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-bsd-rc-detector.rb: support auto
	socket detection.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-bsd-rc-detector.rb: support rc_conf
	parsing.

	* binding/ruby/test/manager/test-bsd-rc-detector.rb: add.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-bsd-rc-detector.rb: add BSDRCDetector.

	* data/rc.d/Makefile.am: install milter-manager RC script.

	* data/rc.d/milter-manager: bin/ -> sbin/.

	* src/Makefile.am: bin/ -> sbin/.

	* data/rc.d/milter-manager: set customizable variables.

	* milter/manager/milter-manager-main.c: support some useful
	command line options: --pid-file, --user-name, --group-name and
	--daemon.

	* milter/manager/milter-manager-main.c: support saving PID to file.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-configuration-loader.rb: support
	pid file configuration by configuration file.

	* milter/manager/milter-manager-configuration.[ch],
	test/manager/test-configuration.c: add
	milter_manager_configuration_get_pid_file() and
	milter_manager_configuration_set_pid_file().

	* TODO: add: send quit command to launcher on manager dispose.

	* milter/manager/milter-manager-main.c: improve launcher process
	starting. daemonize is done before launcher started.

	* milter/manager/milter-manager-process-launcher.[ch]: launcher
	doesn't need configuration.
	* milter/manager/milter-manager-main.c,
	test/manager/test-children.c,
	test/manager/test-process-launcher.c: follow the above change.

	* test/manager/test-process-launcher.c: add a test for launcher run.

	* milter/manager/milter-manager-process-launcher.[ch]: launcher
	has its own main loop and handle finished signal.
	* milter/manager/milter-manager-main.c: don't use busy loop and
	kill. milter-manager's launcher will exit if pipe is closed on
	milter-manager quit.

	* milter/manager/milter-manager-main.c (start_process_launcher):
	start launcher.

	* tool/milter-test-server.c: miler-test-server doesn't need to log
	syslog.

	* milter/manager/milter-manager-main.c: support daemonize.
	* TODO: remove: support daemon mode (run in background)

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-configuration-loader.rb: support
	daemon configuration by configuration file.

	* milter/manager/milter-manager-configuration.[ch],
	test/manager/test-configuration.c: add
	milter_manager_configuration_is_daemon() and
	milter_manager_configuration_set_daemon().

	* milter/manager/milter-manager-configuration.c,
	test/manager/test-configuration.c: clear works again.

2009-01-01  Kouhei Sutou  <kou@cozmixng.org>

	* TODO: remove: support changing effective group.

	* milter/manager/milter-manager-configuration.[ch],
	test/manager/test-configuration.c: split
	unix_socket_mode() for manager and controller.
	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-configuration-loader.rb,
	milter/manager/milter-manager.c: follow the above change.

	* milter/manager/milter-manager-main.c: support effective group
	switching.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-configuration-loader.rb: support
	effective group configuration.

	* milter/manager/milter-manager-configuration.[ch],
	test/manager/test-configuration.c: add
	milter_manager_configuration_get_effective_group() and
	milter_manager_configuration_set_effective_group().

	* milter/manager/milter-manager-main.c (switch_user): improve
	error handling.

	* TODO:
	- add:
	  - support controller's UNIX socket mode changing.
	  - support controller's UNIX socket mode removing on close.
	  - support changing effective group.
	- remove:
	  - support UNIX socket mode changing by configuration.
	  - write unit test for libmilter.

	* milter/manager/milter-manager-configuration.[ch]:
	control_connection_spec -> controller_connection_spec.
	* milter/manager/milter-manager-main.c,
	binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-configuration-loader.rb,
	binding/ruby/test/manager/test-configuration.rb,
	data/milter-manager.conf,
	test/manager/test-configuration.c,
	test/fixtures/manager/milter-manager.conf: follow the above change.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-configuration-loader.rb: support
	removing UNIX socket path on close by configuration.

	* milter/manager/milter-manager.c, test/manager/test-manager.c:
	milter-manager supports removing UNIX socket path on close.

	* milter/client/milter-client.c (milter_client_main): guard this
	case: listen -> client shutdown -> main loop run.

	* milter/manager/milter-manager-configuration.[ch],
	test/manager/test-configuration.c: split
	remove_unix_socket_on_close() for manager and controller.

	* milter/manager/milter-manager-configuration.[ch],
	test/manager/test-configuration.c: add
	milter_manager_configuration_is_remove_unix_socket_on_close() and
	milter_manager_configuration_set_remove_unix_socket_on_close().

	* milter/client.h, milter/client/milter-client.c,
	test/client/test-client.c: support removing UNIX domain socket on
	close.

	* milter/manager/milter-manager-main.c: move change UNIX domain
	socket mode feature to ...
	* milter/client.h, milter/client/milter-client.c,
	test/client/test-client.c: ... here.
	* milter/manager/milter-manager.c: follow the above change.

	* milter/manager/milter-manager-main.c,
	test/manager/test-manager.c: support changing UNIX domain socket mode.

	* milter/client.h, milter/client/milter-client.c,
	test/client/test-client.c: add listen-started signal.

	* test/core/test-connection.c (test_listen): add missing NULL initialize.

	* test/manager/test-launch-command-decoder.c: add missing <string.h>.

	* milter/client/milter-client.c: improve quitting
	synchronization. GCond approach doesn't solve a problem for that:
	accept loop start -> cond broadcast -> cond wait -> infinite wait.

	* milter/core/milter-connection.[ch], test/core/test-connection.c:
	milter_connection_listen() returns socket address and size if needed.
	* libmilter/libmilter-compatible.c, milter/client/milter-client.c,
	milter/manager/milter-manager-main.c: follow the above change.

	* milter/manager/milter-manager-configuration.c (get_property):
	add missing break.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-configuration-loader.rb: support
	security.unix_socket_mode in configuration file.

	* milter/manager/milter-manager-main.c:
	- cleanup signal handling.
	- support configuration reload by SIGHUP.
	- support shutdown by SIGTERM.

	* data/rc.d/milter-manager: add init script for FreeBSD. not
	completed yet.

2008-12-31  Kouhei Sutou  <kou@cozmixng.org>

        * TODO: add:
	support UNIX socket mode changing by configuration.

	* milter/manager/milter-manager-configuration.[ch],
	test/manager/test-configuration.c: add
	milter_manager_configuration_get_unix_socket_mode() and
	milter_manager_configuration_set_unix_socket_mode().

	* test/manager/test-leader.c: increase timeout value.

	* test/manager/test-manager.c: recreate socket FD for each connect()
	try.

	* test/manager/test-manager.c: sleep a bit for reducing test failure.

	* test/lib/milter-test-client.rb,
	test/lib/milter-manager-test-client.c: specify IPv4 address explicitly.

	* doc/reference/Makefile.am: don't remove sections.txt on 'make clean'.

	* milter/server/milter-server-context.c: fix error message.

	* test/manager/test-manager.c: improve connectability check.

	* test/manager/test-manager.c: fix GError usage.

	* test/manager/test-manager.c (wait_for_manager_ready): check
	socket() return value.

	* test/manager/test-manager.c (wait_for_manager_ready): reuse address.

	* test/lib/Makefile.am, test/lib/milter-test-utils.h: add
	errno GType.

	* milter/server/milter-server-context.c,
	test/server/test-server-context.c: fix connect() failure handling.
	* test/server/test-server-context.c,
	test/fixtures/children/negotiate-retry-fail.txt: follow the above
	change.

	* test/core/test-syslog-logger.c (setup_syslog): more portable.

	* milter/client/milter-client.c: surround g_cond_*() with mutex lock
	and unlock.

	* milter/server/milter-server-context.c: improve error message handling.

	* milter/core/milter-agent.c: cleanup to resolve dispose order problem.

	* milter/server/milter-server-context.c: fix a memory leak.

	* test/lib/milter-test-client.c (dispose): ensure clearing
	instance variable.

	* libmilter/mfapi.h: add documents.
	* milter/client/milter-client-context.h: improve document.

	* milter/core/milter-logger.c (log_message): treat "linux" TERM as
	color available terminal.

	* test/server/test-server-context.c: fix invalid memory management.

2008-12-30  Kouhei Sutou  <kou@cozmixng.org>

	* test/manager/test-leader.c (assert_have_response_helper): fix SEGV.

	* test/manager/test-egg.c (test_connection_spec_error): use
	g_unsetenv() not g_setenv() with NULL.

	* test/: include missing <string.h>.

	* test/run-test.sh: improve default make detection.

	* milter/core/milter-command-decoder.c: fix indent.

	* milter/manager/milter-manager-configuration.c: use
	G_GSIZE_MODIFIER for time_t value. Is it OK?

	* milter/client/milter-client.c,
	milter/core/milter-command-decoder.c,
	milter/core/milter-command-encoder.c,
	milter/server/milter-server-context.c,
	binding/ruby/src/toolkit/rb-milter-connection.c,
	binding/ruby/src/toolkit/rb-milter-core-private.c,
	binding/ruby/src/toolkit/rb-milter-socket-address.c: fix IP
	related header file including to work on FreeBSD.

	* tool/milter-performance-check: use different Message-Id for each
	test mail.

	* tool/milter-performance-check: fix strange SMTP client behavior.

	* tool/milter-performance-check: cleanup.

2008-12-29  Kouhei Sutou  <kou@cozmixng.org>

	* milter/client/milter-client-context.[ch],
	test/client/test-client-context-modify.c:
	milter_client_insert_header() supports validation.
	* libmilter/libmilter-compatible.c,
	milter/manager/milter-manager-leader.c,
	test/client/test-client-context-header.c,
	test/manager/test-leader.c: follow the above changes.

	* test/client/test-client-context-modify.c (test_add_header): add
	a written packet assertion.

	* milter/client/milter-client-context.[ch],
	test/client/test-client-context-modify.c:
	milter_client_add_header() checks action flags of negotiated
	option.
	* test/client/test-client-context-header.c,
	test/libmilter/test-smfi-context.c: follow the above change.

	* milter/core/milter-command-encoder.c
	(milter_command_encoder_encode_body): accept NULL as packed_size.

	* milter/client/milter-client.c: wait starting main loop until
	accept loop is started to milter_client_shutdown() always works
	well. Bad case: main loop start -> milter_client_shutdown() ->
	accept loop start.

	* milter/client/milter-client-context.[ch],
	test/client/test-client-context-modify.c: add state validation.

2008-12-26  Kouhei Sutou  <kou@cozmixng.org>

	* milter/client/milter-client-context.[ch],
	test/client/test-client-context-callback.c: remember the current state.

	* milter/client/milter-client-context.[ch]:
	milter_client_add_header() check input.
	* milter/manager/milter-manager-leader.c,
	libmilter/libmilter-compatible.c, libmilter/mfapi.h,
	test/client/test-client-context-header.c: follow the above change.

	* TODO: add:
	  check client context's modify operations
	  (e.g. milter_client_add_header()) are called on end-of-message
	  state.

	* libmilter/libmilter-compatible.c,
	test/libmilter/test-smfi-context.c, libmilter/mfapi.h,
	milter/core/milter-utils.c: cleanup smfi_setmlreply().

	* libmilter/mfapi.h: add documents.
	* milter/client/milter-client-context.h: improve documents.

	* libmilter/libmilter-compatible.c,
	test/libmilter/test-smfi-context.c: handle error.

2008-12-25  Kouhei Sutou  <kou@cozmixng.org>

	* libmilter/mfapi.h: move documentation unnecessary codes to ...
	* libmilter/mfdef.h: ... here.

	* test/libmilter/test-libmilter-compatible.c: add missing tests.

	* Makefile.am: install *.pc.

	* milter/client/milter-client.c: fix a typo.

	* milter/client/milter-client.c: fix connected address detection.

	* libmilter/libmilter-compatible.c (mi_stop): export

	* libmilter/libmilter-compatible.c:
	- initialize implicitly.
	- accept non protocol connection spec form as "unix:" protocol
	connection spec. should it be widely supported in milter-manager?

	* milter/core/milter-connection.c, test/core/test-connection.c:
	accept "local:" protocol as alias of "unix:".

	* TODO: remove: make libmilter.so ABI compatible.

	* configure.ac, libmilter/Makefile.am, libmilter/mfapi.h,
	libmilter/libmilter-compatible.c: make libmilter.so ABI compatible.

	* libmilter/libmilter-compatible.[ch],
	test/libmilter/test-libmilter-compatible.c: add
	libmilter_compatible_convert_status_to() and
	libmilter_compatible_convert_status_from().

	* libmilter/mfdef.h, libmilter/mfapi.h: don't use MILTER_* value.
	(MILTER_STATUS_* are the next works)

	* libmilter/libmilter-compatible.[ch],
	test/libmilter/test-libmilter-compatible.c: MilterActionFlags
	and MilterStepFlags <-> SMFIF_* and SMFIP_* converters aren't
	needed. :<

	* libmilter/libmilter-compatible.[ch],
	libmilter_compatible_convert_from_action_flags().

	* libmilter/libmilter-compatible.c, libmilter/mfapi.h: use same
	values for SMFIS_*.

	* libmilter/libmilter-compatible.[ch],
	test/libmilter/test-libmilter-compatible.c: add
	libmilter_compatible_convert_action_flags().

	* libmilter/mfapi.h: follow the current enum name.

	* milter/client.h, milter/client/milter-client.c: improve error
	handling.

	* libmilter/libmilter-compatible.c,
	test/libmilter/test-libmilter-compatible.c: implement smfi_stop()
	and smfi_version().

	* libmilter/mfapi.h: add documents.

2008-12-25  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* milter/server/milter-server-context.c (write_packet): Do not check
	busy if abort and quit state.

2008-12-24  Kouhei Sutou  <kou@cozmixng.org>

	* tool/milter-test-client.c: handle SIGINT only once.

	* milter/client/milter-client.c, test/client/test-client.c:
	milter_client_shutdown() stops accepting new connections but
	existing connections are continued until finished.

	* libmilter/libmilter-compatible.c,
	test/libmilter/test-libmilter-compatible.c: add format error check
	in smfi_setconn().

	* libmilter/mfapi.h: add documents.

	* libmilter/libmilter-compatible.c,
	test/libmilter/test-libmilter-compatible.c: implement
	smfi_setdbg().

	* milter/core/milter-logger.[ch], test/core/test-logger.c:
	- add target level to logger.
	- export default log handler.

	* milter/manager/milter-manager-main.c,
	milter/client/milter-client.c: use default backlog value by default.

	* libmilter/main.h: add documents.

	* libmilter/libmilter-compatible.c,
	test/libmilter/test-libmilter-compatible.c: implement
	smfi_setbacklog().

	* milter/core/milter-connection.[ch]: use default backlog value if
	passed backlog value is <= 0.

	* libmilter/libmilter-compatible.c: adapt the current
	smfi_opensocket() and smfi_register() implementations to the
	original one.

	* doc/reference/, doc/reference/: add documents.

	* milter/core/milter-reader.c: handle error on shutdown.

	* milter/client/milter-client-context.c,
	milter/server/milter-server-context.c: shutdown on timeout.

	* milter/client/milter-client.c: emits connection established
	signal on main thread.

	* tool/milter-test-server.c: use milter_agent_shutdown() instead
	of g_main_loop_quit().

	* test/core/test-reader.c (test_shutdown): add.

	* milter/client/milter-client-context.c (cb_decoder_quit): use
	shutdown instead of emitting finished signal directory.

	* milter/core/milter-reader.[ch] (milter_reader_shutdown): add.

	* milter/core/milter-agent.[ch] (milter_agent_shutdown): add.

	* milter/client/milter-client-context.c: remove garbages.

	* tool/milter-test-client.c: use finished instead of quit. quit is
	no longer existed.

	* tool/milter-test-server.c: use main loop.

	* test/: follow the below changes.

	* milter/client/milter-client.c, milter/core/milter-agent.[ch],
	milter/server/milter-server-context.c,: start reader explicitly.

	* milter/core/milter-reader.[ch]: don't start watching automatically.

	* milter/client/milter-client.c (milter_client_main): fix wrong
	main context attached.

2008-12-22  Kouhei Sutou  <kou@cozmixng.org>

	* libmilter/libmilter-compatible.[ch],
	test/libmilter/test-libmilter-compatible.c: implement
	smfi_opensocket().

	* milter/client.h, milter/client/milter-client.c: add
	milter_client_get_listen_channel() and
	milter_client_set_listen_channel().

	* libmilter/mfapi.h, milter/client/milter-client-context.[ch]: add
	document.

	* milter/core/milter-error-emittable.[ch]: add document.

2008-12-22  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* milter/manager/milter-manager-child.[ch]: remove
	milter_manager_child_start and milter_manager_child_get_pid.
	* milter/manager/milter-manager-process-launcher.[ch]: Check process
	has been already launched.
	* test/lib/milter-manager-test-scenario.c: Set user name to
	MilterManagerEgg for MilterManagerProcessLauncher.
	* test/manager/test-children.c: Use MilterManagerProcessLauncher if
	the option is enabled.
	* milter/manager/milter-manager-process-launcher.c: Output log if
	launched child terminated normailly.
	* milter/manager/milter-manager-process-launcher.c: Also log if
	launched child terminated unexpectedly.
	* test/fixtures/children/negotiate-retry-fail.txt: MilterManagerChild
	does not emit milter-exit error any more.
	* milter/manager/milter-manager-main.c: Ensure to kill launcher.
	* milter/manager/milter-manager-main.c: Do not kill if launcher_pid is
	not valid.

2008-12-22  Kouhei Sutou  <kou@cozmixng.org>

	* milter/core/milter-finished-emittable.h: add document.

	* binding/ruby/lib/milter.rb: cancel log handler. (just a workaround)

	* TODO: remove: milter-client-context: mta-timeout -> timeout.

	* TODO, milter/client/milter-client-context.[ch]: remove
	MilterClientContext::quit signal.
	* milter/, test/: follow the above change.

2008-12-19  Kouhei Sutou  <kou@cozmixng.org>

	* milter/core/milter-finished-emittable.[ch]: add documents.

	* milter/client/milter-client-context.[ch]: add documents.

	* TODO: add: remove MilterClientContext::quit signal.

	* TODO: add: support MAIL FROM/RCPT TO additional info parsing.

	* doc/reference/milter-manager.signals: add argument names.

	* milter/client/miter-client-context.[ch]: mta_timeout -> timeout.
	* milter/client/, milter/manager/,
	test/client/test-client-context-callback.c: follow the above change.

	* test/manager/test-process-launcher.c: fix local dependent test
	failures.

	* milter/manager/milter-manager-process-launcher.c,
	test/manager/test-process-launcher.c: cleanup.

2008-12-19  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* milter/manager/milter-manager-children.[ch]: Added
	milter_manager_children_set_launcher_channel.
	* milter/manager/milter-manager.c: Invoke
	milter_manager_leader_set_launcher_channel.
	* milter/manager/milter-manager-leader.c: Invoke
	milter_manager_leader_set_launcher_channel.
	* milter/manager/milter-manager-child.[ch]: Added
	milter_manager_child_get_user_name and
	milter_manager_child_get_command_line_string.
	* milter/manager/milter-manager-configuration.[ch]: Added
	milter_manager_configuration_get_effective_user and
	set_effective_user.
	* bindings/ruby/lib/milter/manager.rb: Added effective_user= method.
	* milter/manager/milter-manager-children.c: Use
	MilterManagerLaunchProtcol to start a new milter.
	* milter/manager/milter-manager-main.c: Fork and create a
	MilterManagerProcessLauncher in child process. Also change effective
	user if milter-manager is run by root user.
	* milter/manager/milter-manager-main.c: Kill child process if switch
	user fails.

2008-12-18  Kouhei Sutou  <kou@cozmixng.org>

	* TODO: add:
	- milter-client-context should close reader and writer and emit
	finished signal on timeout.
	- milter-client-context: mta-timeout -> timeout.

	* TODO: add: milter-manager supports macros requests.

	* milter/client/milter-client-context.[ch]: pass
	MilterMacrosRequets to negotiate and negotiate-response signal to
	accept customizing macros requests.
	* milter/, test/: follow the above change.

	* doc/reference/milter-manager-sections.txt: add for ignoring
	needless symbols.

	* milter/client/milter-client-context.h: add document.

	* tool/milter-test-client.c: MilterDecoder -> MilterClientContext.

2008-12-18  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* milter/manager/milter-manager-main.c: Use milter_init.
	* milter/manager/milter-manager-reply-protocol.h,
	milter/manager/milter-manager-reply-encoder.[ch],
	milter/manager/milter-manager-reply-decoder.[ch]: Added new objects
	for reply of "success", "failure", "error". MilterControlReply* should
	be use them.
	* milter/manager/milter-manager-control-reply-encoder.[ch],
	milter/manager/milter-manager-control-reply-decoder.[ch]: Now these
	object is a child of MilterManagerReplyXX.
	* milter/manager/milter-manager-umbilical-protocol.h,
	milter/manager/milter-manager-umbilical-command-encoder.[ch],
	milter/manager/milter-manager-umbilical-command-decoder.[ch]: Added.
	* milter/manager/*: Umbilical -> Launch.
	* test/lib/milter-test-utils.[ch]: milter_test_pump_all_events.
	* test/manager/test-controller.c: Use milter_test_pump_all_events.
	* milter/manager/milter-process-launcher.[ch]: Added.
	* milter/manager/milter-manager.[ch]: Added
	milter_manager_set_launcher_channel.
	* milter/manager/milter-manager-leader.[ch]: Added
	milter_manager_leader_set_launcher_channel.

2008-12-17  Kouhei Sutou  <kou@cozmixng.org>

	* doc/reference/, milter/client.h: add documentation for
	milter/client.h.

	* TODO: add: make libmilter.so ABI compatible.

	* binding/ruby/test/toolkit/test-command-encoder.rb
	(TestCommandEncoder#test_define_macro): don't use convenience enum
	specification supported since Ruby/GLib2 0.17.0.

	* binding/ruby/test/run-test.rb,
	binding/ruby/test/milter-test-utils.rb: remove RR depended codes.

	* README.ja: describe license information.

	* TODO: add:
	mention GPL license in src/*.c, tool/*.

	* doc/reference/milter-manager-docs.sgml: add milter/core.h.

	* milter/core.h: add document.

	* milter/core/milter-main.h: move to ...
	* milter/core.h: ... here.

2008-12-17  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* tool/milter-performance-check: Added.

2008-12-17  Kouhei Sutou  <kou@cozmixng.org>

	* TODO: add:
	milter_manager_egg_to_xml_string(): add user name, timeouts and
	command options (<- needed?)

2008-12-16  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/lib/milter/manager.rb: add nil check.

	* binding/ruby/test/manager/test-configuration.rb: add tests for
	connection_spec accessors.

	* gtk-doc.make, doc/reference/: add.

	* README, INTRODUCTION: just add.

	* TODO: add: write man for milter-manager, milter-test-client,
	milter-test-server and milter-log-tool.

	* INTRODUCTION.ja: extract from README.ja.

	* README.ja: fill.

2008-12-16  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* tool/ruby: Added.
	* tool/ruby/milter-rrd.rb: Serapare from milter-log-tool.rb.
	* tool/milter-log-tool.rb -> tool/milter-log-tool: Renamed.

2008-12-15  Kouhei Sutou  <kou@cozmixng.org>

	* README.ja: add.

	* TODO: add an applicable condition idea: DNSBL.

	* TODO: add: milter-manager can be ran as normal user.

	* binding/ruby/src/toolkit/rb-milter-socket-address.c: use
	rb_f_sprintf() instead of rb_str_format().

	* binding/ruby/src/toolkit/rb-milter-compat.[ch]: add fallback
	RVAL2CSTR_ACCEPT_NIL.

	* binding/ruby/src/toolkit/rb-milter-core-private.c
	(rb_milter__rval2macros): use rb_iterate() and rb_each() instead
	of rb_block_call().

	* binding/ruby/src/toolkit/rb-milter-compat.[ch]: fix return type
	of rb_milter_compat_inspect().

	* binding/ruby/src/toolkit/rb-milter-compat.[ch]: add fallback
	RBG_INSPECT.

	* binding/ruby/src/toolkit/rb-milter-compat.[ch]: add.

	* src/milter-manager.c: define fallback RUBY_INIT_STACK.

	* configure.ac: intltool >= 0.35.0.

	* milter/core/milter-reply-decoder.c (decode_reply_reply_code):
	initialize variable by NULL.

	* binding/ruby/src/toolkit/rb-milter-core-private.h: move to
	backward compatibility macros to ...
	* binding/ruby/src/toolkit/rb-milter.h: ... here.

2008-12-15  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* module/configuration/ruby/milter-manager-ruby-configuration.c: Do
	not use G_DEFINE_DYNAMIC_TYPE.
	* milter/core/milter-utils.[ch]: Added milter_utils_strcmp0.
	* milter/core/milter-header.c: Use milter_utils_strcmp0 instead of
	g_strcmp0.
	* milter/manager/milter-manager-children.c: Do not use
	g_queue_clear().
	* milter/client/milter-client-context.c: Use milter_utils_timeout_add
	instead of g_timeout_add_seconds.
	* milter/core/milter-utils.c: Use g_string_vprintf instead of
	g_string_append_vprintf.
	* milter/core/milter-utils.c: Do not use g_string_vprintf too.
	* milter/manager/milter-manager-children.c: Do not use g_queue_init.
	* bindings/ruby/src/toolkit/rb-milter-core-private.h: Workaround for
	agey Ruby-GNOME2.
	* milter/client/milter-client.c: Fixed a crash. This is a side effect
	of Rev.1841. That change caused emitting of "finished" signal twice.

2008-12-13  Kouhei Sutou  <kou@cozmixng.org>

	* test/manager/test-controller.c (setup_input_io): fix too many
	unreference bug.

	* data/applicable-conditions/Makefile.am (conditions_DATA): remove
	nonexistent entry.

2008-12-12  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/lib/milter/manager.rb: improve error handling.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-custom-xml-loader.rb: support XML
	serialized enabled parsing.

	* binding/ruby/test/manager/: follow the recent changes.

	* data/applicable-conditions/disable.conf: remove needless file.

	* milter/manager/milter-manager-configuration.c,
	test/manager/test-configuration.c: use egg's enabled.

	* milter/manager/milter-manager-egg.c
	(milter_manager_egg_to_xml_string): use
	milter_utils_xml_append_boolean_element().

	* milter/core/milter-utils.[ch], test/core/test-utils.c:
	add milter_utils_xml_append_boolean_element().

	* milter/manager/milter-manager-egg.[ch],
	test/manager/test-egg.c, test/manager/test-configuration.c: add
	enabled to egg.

	* TODO: add an entry:
	fix FIXME in data/applicable-conditions/remote-network.conf.

	* data/applicable-conditions/remote-network.conf: add FIXME.

	* TODO: add an entry: don't handle log event in Ruby/GLib.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-configuration-loader.rb: egg and
	applicable condition definition merge existing item and replace it.

	* binding/ruby/test/manager/test-egg.rb: add tests for description.

	* milter/manager/milter-manager-egg.[ch], test/manager/test-egg.c:
	add description to egg.

	* binding/ruby/src/manager/rb-milter-manager-egg.c,
	binding/ruby/test/manager/test-egg.rb: bind merge or egg.

	* milter/manager/milter-manager-egg.c, test/manager/test-egg.c:
	merge missing user name.

	* binding/ruby/src/manager/rb-milter-manager-applicable-condition.c,
	binding/ruby/test/manager/test-applicable-condition.rb: bind
	merge of applicable condition.

	* milter/manager/milter-manager-egg.[ch], test/manager/test-egg.c:
	implement merge.

	* milter/manager/milter-manager-applicable-condition.[ch],
	test/manager/test-applicable-condition.c: implement merge.

	* binding/ruby/src/manager/rb-milter-manager-configuration.c,
	binding/ruby/test/manager/test-configuration.rb: bind
	egg related functions.

	* test/lib/milter-manager-test-utils.[ch],
	test/lib/milter-test-utils.[ch],
	test/manager/test-configuration.c,
	test/manager/test-egg.c:
	milter_test_equal_manager_applicable_condition() ->
	milter_manager_test_applicable_condition_equal().

	* milter/manager/milter-manager-configuration.[ch],
	test/lib/milter-manager-test-utils.[ch],
	test/manager/test-configuration.c: add egg operation functions
	into configuration.

	* tool/milter-log-tool.rb: use current directory as default output
	directory.

2008-12-12  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* tool/milter-log-tool.rb: Cleanup output_graph.
	* tool/milter-log-tool.rb: Added --no-update-db option.
	* tool/milter-log-tool.rb: Show vertical label in graph.
	* tool/milter-log-tool.rb: Show update time in title label.
	* tool/milter-log-tool.rb: Show milter number on pass child graph.
	* milter/client/milter-client-context.c: Output quarantine statistics
	log.

2008-12-11  Kouhei Sutou  <kou@cozmixng.org>

	* milter/client/milter-client-context.c (quit_response): emit finished.

	* binding/ruby/lib/milter/manager.rb: all? -> any?.

	* data/applicable-conditions/disable.conf: add.

	* binding/ruby/lib/milter/manager.rb: use
	MilterManagerApplicableCondition.

	* binding/ruby/test/manager/test-configuration-loader.rb,
	binding/ruby/test/manager/test-custom-xml-loader.rb: follow the
	recent changes.

	* binding/ruby/src/manager/rb-milter-manager-configuration.c,
	binding/ruby/test/manager/test-configuration.rb: bind find and remove.

	* milter/manager/milter-manager-configuration.[ch],
	test/manager/test-configuration.c: add
	milter_manager_configuration_find_applicable_condition().

	* test/fixtures/leader/body-accept.txt,
	test/manager/test-leader.c: ensure waiting expected n-responses.

	* test/fixtures/leader/no-body-flag-on-both-client.txt: omit this
	scenario.

	* test/manager/test-leader.c: use 'emitted' not 'waiting'.

	* test/manager/test-manager.c: ensure killing hatched process.

	* test/manager/test-manager.c: add connect() check.

	* milter/manager/milter-manager-configuration.[ch],
	test/manager/test-configuration.c: add removing applicable
	condition API.

2008-12-11  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* tool/milter-log-tool.rb: Create state distinct RRD for passed
	filter.
	* milter/manager/milter-manager-children.c: Reply "continue" even if
	the rest milters does not demand the command on connect, helo,
	envelope-from, envelope-recipient, header and body state because when
	a milter which demands the command passes the command on "check-XX"
	signal, the rest milter should go on session.
	* tool/milter-log-tool.rb: Output filter pass graph.
	* milter/core/milter-utils.[ch]: Added
	milter_utils_get_enum_nick_name.
	* milter/server/milter-server-context.c: Use nick name for pass state.
	* tool/milter-log-tool.rb: "continue" on end-of-message mail is a
	normal mail not all mails so need to stack its bar on rejected mail.
	* tool/milter-log-tool.rb: Separate mail status RRD file.
	* milter/client/milter-client-context.c: Use nick name for reply to
	MTA.
	* tool/milter-log-tool.rb: Added MilterMailStatusLog class.
	* tool/milter-log-tool.rb: Added MilterRRDCount class.
	* tool/milter-log-tool.rb: Create new MilterRRDData class.
	* tool/milter-log-tool.rb: Cleanup MilterRRDCount class.
	* tool/milter-log-tool.rb: Added MilterRRD class. Also fix
	MilterRRDCount accessor method.
	* tool/milter-log-tool.rb: MilterMailStatusLog#count moved to
	MilterRRD#count.
	* tool/milter-log-tool.rb: MilterMailStatusLog -> MilterMailStatusRRD.
	* tool/milter-log-tool.rb: Added MilterPassChildRRD class.
	* tool/milter-log-tool.rb: Added MilterSessionRRD class.
	* tool/milter-log-tool.rb: cleanup create_rdd.
	* tool/milter-log-tool.rb: Added accept mail count.
	* tool/milter-log-tool.rb: Define @items for status, state or
	whatever.
	* tool/milter-log-tool.rb: Cleanup update_db.

2008-12-10  Kouhei Sutou  <kou@cozmixng.org>

	* milter/manager/milter-manager-applicable-condition.[ch],
	milter/manager/milter-manager-egg.c, test/manager/test-egg.c: call
	attach-to on hatched.

	* milter/manager/milter-manager-configuration.c,
	test/manager/test-configuration.c: add applicable condition to XML.

	* binding/ruby/src/manager/rb-milter-manager-egg.c,
	binding/ruby/test/manager/test-egg.rb: bind
	egg's applicable condition.

	* binding/ruby/src/manager/rb-milter-manager-configuration.c,
	binding/ruby/test/manager/test-configuration.rb: bind
	configuration's applicable condition.

	* milter/manager/milter-manager-configuration.[ch],
	test/lib/milter-test-utils.[ch],
	test/manager/test-configuration.c: support applicable condition.

	* binding/ruby/test/toolkit/test-server-context.rb:
	check-end-of-header is removed.

	* binding/ruby/test/toolkit/run-test.rb: remove.

	* binding/ruby/src/manager/rb-milter-manager-applicable-condition.c,
	binding/ruby/src/manager/rb-milter-manager.c,
	binding/ruby/src/manager/rb-milter-manager-private.h,
	binding/ruby/test/manager/test-applicable-condition.rb: bind
	applicable condition.

	* milter/manager/milter-manager-applicable-condition.c: make writable.

	* milter/manager/milter-manager-egg.[ch], test/manager/test-egg.c:
	support applicable condition.

	* milter/manager/milter-manager-applicable-condition.[ch],
	test/manager/test-applicable-condition.c: add.

	* milter/manager/milter-manager-children.c,
	milter/manager/milter-manager-configuration.[ch],
	test/manager/test-configuration.c:
	return_status_if_filter_unavailable -> fallback_status.

	* binding/ruby/lib/milter/manager.rb: fix wrong argument passing.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-custom-xml-loader.rb: support
	applicable condition loading and remove target configuration
	support.

2008-12-10  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* tool/milter-log-tool.rb: swap child and client sessions.
	* tool/milter-log-tool.rb: Do not output graph if RRD file does not
	exist.
	* tool/milter-log-tool.rb: Count correct normal mails.
	* tool/milter-log-tool.rb: Collect all status data for normal mails.
	* milter/manager/milter-manager-children.c: Invoke milter_statistics
	for end of filter process in expire_child to ensure output it.
	* milter/manager/milter-manager.c: Do not unref MilterManagerLeader in
	its signal callback function.
	* milter/manager/milter-manager-children.c: Emit "finished" signal in
	expire_child.
	* tool/milter-log-tool.rb: mail graph is a bar graph.
	* tool/milter-log-tool.rb: Use LINE instead of LINE1 or LINE2. LINE#
	represents its width.
	* tool/milter-log-tool.rb: Absent data should be "U" instead of 0. 
	* tool/milter-log-tool.rb: Output last update time into graph.
	* tool/milter-log-tool.rb: Separate session and mail data class.
	* tool/milter-log-tool.rb: Added MilterRRDCount class.
	* milter/server/milter-server-context.c: Remove needless
	"check-end-of-header" signal.
	* tool/milter-log-tool.rb: Collect passed filter data.

2008-12-09  Kouhei Sutou  <kou@cozmixng.org>

	* data/milter-manager.conf, data/applicable-conditions/,
	binding/ruby/lib/milter/manager.rb: support applicable condition
	definition in other files.

	* binding/ruby/src/manager/rb-milter-manager-configuration.c,
	binding/ruby/test/manager/test-configuration.rb: bind load path
	related functions.

	* milter/manager/milter-manager-configuration.[ch],
	test/manager/test-configuration.c: add
	milter_manager_configuration_get_load_paths().

	* TODO: add an entry for performance.

	* TODO: add graph types:
	- current working child milters.
	- # of all mails and rejected mails.

	* test/core/test-utils.c (test_append_index)
	(test_xml_append_text_element): write missing tests.

2008-12-09  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* tool/milter-log-tool.rb: Script to output graph.
	* tool/milter-log-tool.rb: Added start_time and end_time for graph.
	* tool/milter-log-tool.rb: Default start time of graph are 1hour for
	second, 12hour for minute, 24 hour for hour.
	* tool/milter-log-tool.rb: Added MilterGraphTimeSpan class.
	* milter/client/milter-client-context.c: Remove needless cast.
	* milter/client/milter-client-context.c: Output statistics log on each
	response.
	* tool/milter-log-tool.rb: Added rejected mails. Please remove old rrd
	file.
	* tool/milter-log-tool.rb: Separate graph.
	* tool/milter-log-tool.rb: 0 padding from last data.
	* milter/server/milter-server-context.c: Output statistics log on
	pass_state.
	* milter/server/milter-server-context.c: Use milter_debug instead of
	milter_info.
	* milter/core/milter-reply-decoder.c, milter/core/milter-reader.c,
	milter/client/milter-client.c, milter/client/milter-client-context.c:
	Use milter_debug instead of milter_info.
	* milter/manager/milter-manager-leader.c,
	milter/manager/milter-manager-child.c,
	milter/manager/milter-manager-children.c,
	milter/manager/milter-manager-main.c: Use milter_debug instead of
	milter_info.
	* milter/core/milter-syslog-logger.c: MILTER_LOG_LEVEL_STATISTICS is
	corresponding to LOG_INFO.

2008-12-08  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/lib/milter/manager.rb:
	- remove target_XXX.
	- use applicable conditions.

	* TODO: add some applicable condition ideas:
	- detected as spam (X-Spam-Flag:, X-Bogosity:)
	- detected as virus (X-Virus-Status:)

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-configuration-loader.rb,
	binding/ruby/test/manager/test-configuration.rb,
	binding/ruby/test/manager/test-custom-xml-loader.rb: add
	ApplicableCondition.

	* TODO: add an entry: add default applicable conditions.

	* binding/ruby/src/manager/,
	binding/ruby/test/manager/test-configuration.rb:
	Milter::Manager::Configuration supports to-xml signal.

	* milter/manager/milter-manager-configuration.[ch],
	test/manager/test-configuration.c: support customized XML
	generation.

2008-12-08  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* milter/manager/milter-manager-children.c: Output "End of filter
	process ..." to log if time-out or error are occured.

2008-12-08  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/src/manager/rb-milter-manager-configuration.c: bind
	milter_manager_configuration_to_xml_string().

	* binding/ruby/test/manager/test-configuration-loader.rb: add.

	* binding/ruby/lib/milter/manager.rb: encode additional
	information value as YAML to keep Ruby object.

2008-12-05  Kouhei Sutou  <kou@cozmixng.org>

	* test/server/test-server-context.c: follow the recent change.

	* milter/manager/milter-manager.[ch],
	milter/manager/milter-manager-main.c, test/manager/test-manager.c:
	manager doesn't create configuration.

	* milter/manager/milter-manager-configuration.[ch],
	test/manager/test-configuration.c, test/manager/test-controller.c:
	add_load_path -> append_load_path and prepend_load_path.

	* milter/server/milter-server-context.c
	(milter_server_context_establish_connection): reduce duplicated
	error message generation.

	* milter/server/milter-server-context.c (connect_watch_func): fix
	an error message.

	* milter/manager/milter-manager-leader.c: fix wrong reply handling.

	* test/manager/test-manager.c (wait_for_manager_ready):
	timeout_waiting -> timeout_emitted.

2008-12-05  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* milter/client/milter-client.c, milter/manager/milter-manager.c:
	"Start session.." and "End of session.." moved to MilterManager.
	* milter/core/milter-syslog-logger.c: Do not output time value in
	syslog.
	* test/manager/test-manager.c (wair_for_manager_ready): Use
	non-blocking I/O.
	* milter/core/milter-syslog-logger.c: output time value only if log
	level is MILTER_LOG_LEVEL_STATISTICS.
	* milter/manager/milter-manager-children.c: Output pointer address of
	child to milter_statistics to identify each child.

2008-12-04  Kouhei Sutou  <kou@cozmixng.org>

	* milter/client/milter-client.c (process_client_channel): add FIXMEs.

	* tool/milter-test-client.c: handle SIGINT for terminating myself.

	* milter/core/milter-main.c (milter_init): initialize thread.

	* milter/client/milter-client.c (milter_client_main): use another
	main loop in a thread for accepting connection.

	* TODO: remove an entry: milter_manager_egg_to_xml_string()
	support target_XXX serialize.

	* test/client/test-client.c,
	test/client/test-client-context-header.c: add missing data signal
	handling.

	* test/manager/test-child.c: add a missing header.

	* binding/ruby/lib/milter/manager.rb: add target information to XML.

	* binding/ruby/src/manager/rb-milter-manager-egg.c,
	binding/ruby/test/manager/test-egg.rb: support XML customize.

	* milter/manager/milter-manager-egg.[ch], test/manager/test-egg.c:
	support XML customize.

	* data/milter-manager.conf: add sample configurations.

	* tool/milter-test-client.c (cb_data): add missing DATA logging.

	* binding/ruby/lib/milter/manager.rb: fix a wrong condition bug.

2008-12-04  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* test/manager/test-manager.c (wait_for_manager_ready): Check errno
	after invoking socket().
	* test/manager/test-manager.c: Send unknown command by default.
	* milter/manager/milter-manager-children.c: Set io channel encoding
	NULL to handle binary data correctly.
	* test/manager/test-leader.c: Added large body packet test. But
	received data is not checked yet.
	* test/manager/test-manager.c: Added check controller port test.
	* test/manager/test-manager.c (wait_for_manager_ready): Check errno
	after exiting timeout loop to inspect timeout cause.
	* milter/manager/milter-manager-child.[ch]: Added
	milter_manager_child_get_pid() for test. Also do not use WCOREDUMP
	since the macro is unable to use on SunOS, AIX etc.
	* test/manager/test-leader.c: Reduce large body size to avoid hang
	up.. I am not satisfied the size.
	* test/core/test-logger.c: console output test.
	* milter/client/milter-client.c: Added milter_statistics.
	* milter/client/milter-client.c: Output MilterClientContext address in
	milter_statistics.
	* milter/manager/milter-manager-children.c: Change message of start
	process.
	* milter/manager/milter-manager.c, milter/client/milter-client.c: To
	ensure that the last child outputs "End of filter process.." to log
	MilterManager should not unref the MilterManagerLeader object in
	cb_quit(). But the message ("End of filter..") is after ("End of
	session..") since MilterClient receives "finished" signal in
	MilterAgent. Fix it!
	* milter/manager/milter-manager.c: Fix the order of finished process
	in log. But "Invalid file descriptor." comes from somewhere.

2008-12-03  Kouhei Sutou  <kou@cozmixng.org>

	* TODO: add an entry: milter_manager_egg_to_xml_string() support
	target_XXX serialize.

	* binding/ruby/lib/milter/manager.rb: support
	/configuration/milters/milter/connection_spec parsing
	partially. Need TEST!!!

	* configure.ac: fix a typo.

	* binding/ruby/lib/milter/manager.rb: support
	/configuration/milters/milter parsing partially. Need TEST!!!

	* module/configuration/ruby/milter-manager-ruby-configuration.c:
	fix wrong method name bug.

	* milter/manager/milter-manager-configuration.c
	(milter_manager_configuration_to_xml_string): fix wrong value bug.

	* tool/milter-test-server.c: add --unknown command.

	* tool/milter-test-server.c: use sendmail compatible options.

	* tool/milter-test-server.c, test/tool/test-server.c, TODO:
	support --connect-host and --connect-address.

	* tool/milter-test-server.c, test/tool/test-server.c,
	test/tool/fixtures/parse-test.mail: add missing angles to path.

	* TODO: add: support extracting multiple {reverse,forward}-paths
	from envelope-from and envelope-recipient address in --mail-file.

	* tool/milter-test-server.c, test/tool/test-server.c,
	test/tool/fixtures/parse-test.mail: support path extraction from
	mail address.

	* tool/milter-test-server.c: add a missing space.

	* tool/milter-test-server.c, test/tool/fixtures/parse-test.mail:
	fix the last line of body handling.

	* tool/milter-test-server.c, test/tool/fixtures/parse-test.mail:
	fix header and body separation parsing.

	* TODO: update an entry: fix envelope-from and envelope-recipient
	address extracting in --mail-file.

	* milter/core/milter-utils.c, test/core/test-utils.c:
	milter_utils_get_flags_names() works for the first flags data
	correctly.

	* tool/milter-test-client.c: support received information output.

	* TODO: update an entry:
	  - delete: support outputting received information.
	  - add: support outputting reply information.

	* milter/core/milter-utils.[ch], test/core/test-utils.c: add
	milter_utils_get_flags_names().

	* src/Makefile.am (milter_manager_LDADD): add a missing dependency.

	* milter/core/milter-connection.[ch]:
	milter_connection_generate_spec_from_address() ->
	milter_connection_address_to_spec().
	* milter/client/milter-client.c, test/core/test-connection.c:
	follow the above change.

	* TODO: add an entry:
	- tool/milter-test-client:
	  - support outputting received information.
	  - support customizing reply by command line option.

	* tool/milter-test-client.c: use <glib/gi18n.h>.

	* TODO: add an entry:
	- tool/milter-test-server:
	  - support --connect-host=HOST
	  - support --connect-address=SPEC
	  - support --macro=CONTEXT:NAME:VALUE

	* tool/milter-test-server.c: cleanup options.
	* test/tool/test-server.c: follow the above change.

	* tool/milter-test-server.c: use milter_init() not g_type_init().

2008-12-03  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* milter/manager/milter-manager-children.c:
	get_first_command_waiting_child_queue ->
	get_first_child_in_command_waiting_child_queue.
	* milter/manager/milter-manager-children.c: Cleanup.
	Do not emit "continue" signal of MilterServerContext when "accept"
	reply is received by the child after the second child.
	* test/fixtures/manager/skip-on-body.txt: Start client2007 too.
	* milter/manager/milter-manager-children.c: Counting senting body is
	not needed because the process is done in MilterServerContext.
	* milter/manager/milter-manager-children.c
	(send_first_command_to_next_child): The first command should be a
	command that is needed for target child.
	* milter/manager/milter-manager-children.c: Send "continue" if the
	next command is not received yet.
	* milter/manager/milter-manager-leader.c,
	milter/server/milter-server-context.c: Support chain continuous
	"body" command.
	* milter/manager/milter-manager-children.c: Revert removal counting
	sending body cout.
	* test/manager/test-manager.c,
	test/fixture/leader/body-larger-than-milter-chunk-size.txt: Added a
	larger body test. But separated secondary chunk is not checked yet.
	* test/lib/milter-manager-test-client.c: > 4096 bytes packet support.
	* test/lib/milter-manager-test-client.c: Workaround for > 4096 bytes
	body chunk.
	* test/tool/fixtures/large.mail: Added 64kbytes over size mail. The
	test does not check its output yet.
	* tool/milter-test-client.c: Use MilterSyslogLogger.
	* tool/milter-test-client.c: Use MilterSyslogLogger only if verborse
	mode.
	* tool/milter-test-server.c: Support mail data from stdin.

2008-12-02  Kouhei Sutou  <kou@cozmixng.org>

	* milter/core/milter-utils.[ch], test/core/test-utils.c: add XML
	generation related functions.

	* milter/manager/milter-manager-egg.[ch],
	milter/manager/milter-manager-configuration.[ch],
	test/manager/test-configuration.c,
	test/manager/test-egg.c: add XML generation functions.

	* milter/server/milter-server-context.c
	(milter_server_context_establish_connection): don't use
	uninitialized errno.

	* milter/server/milter-server-context.c,
	test/server/test-server-context-signals.c: improve log message.

	* tool/milter-test-server.c: improve output format.

	* test/tool/test-server.c: follow the recent output format changes.

	* src/Makefile.am: add a missing dependency.

	* **/Makefile.am: cleanup.

	* test/fixtures/manager/, test/manager/test-manager.c,
	tool/milter-test-server.c: support "Finished in XXXsec.".

	* test/lib/milter-test-client.rb (MilterTestClient#valid_state):
	fix wrong condition.

	* tool/milter-test-server.c: report processed time.

	* tool/milter-test-server.c: use <glib/gi18n.h>.

	* test/lib/milter-test-client.rb: cleanup.

	* test/manager/test-manager.c (test_scenario): start manager ASAP.

2008-12-02  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* tool/milter-test-server.c (cb_reply_code): Reply status depends on
	reply code.
	* tool/milter-test-server.c: Send "unknown" command after
	"envelope-recipient".
	* milter/server/milter-server-command.c (cb_decoder_continue): Send
	"continue" even if UNKNOWN state.
	* test/lib/milter-test-client.rb: Return continue on "unknown" state.
	* milter/client/milter-client-context.c: Handle "unknown".
	* test/lib/milter-test-client.rb: unknown state is not invalid.
	* test/manager/test-manager.c: Ensure closing milter-manager.
	* milter/manager/milter-manager-logger.[ch]: Added.
	* milter/manager/milter-manger.c: Use MilterManagerLogger.
	* milter/manager/milter-manager-logger.[ch] ->
	milter/core/milter-system-logger.[ch]: Moved.
	* milter/core/milter-system-logger.[ch]: milter_system_logger_new()
	needs identity for log.
	* tool/milter-test-server.c: Use MilterSyslogLogger.
	* test/tool/test-server.c: Do not reply in abort session.
	* milter/manager/milter-manager-children.c (cb_accept): Send next
	command if current state is DATA, HEADER and END_OF_HEADER.
	* tool/milter-test-server.c (cb_reply_code): Continue session if
	"reply-code" is received.
	* milter/server/milter-server-context.c: Send "continue" only if
	process_body_count is zero on body state.

2008-12-01  Kouhei Sutou  <kou@cozmixng.org>

	* module/configuration/ruby/milter-manager-ruby-configuration.c,
	binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-custom-xml-loader.rb: start custom
	configuration file loading support.

	* binding/ruby/test/milter-test-utils.rb,
	binding/ruby/test/run-test.rb: use RR.

	* binding/ruby/test/: MilterManagerEncoderTestUtils is needed.

	* milter/manager/milter-manager-configuration.[ch]: use other
	logic for custom configuration file loading.

	* binding/ruby/test/: unify utility modules.

	* milter/manager/milter-manager-controller.[ch],
	milter/manager/milter-manager-main.c,
	test/manager/test-controller.c: MilterManagerController has
	MilterManager not MilterManagerConfiguration.

	* milter/manager/milter-manager-configuration.[ch]
	(milter_manager_configuration_clear_load_paths): add.

	* milter/manager/: make MilterManager.

	* milter/client.h, milter/client/milter-client.c: make connection
	spec customizable.

	* milter/manager/milter-manager-controller.c: connect to
	get-status command.

	* test/core/test-utils.c: gtype -> type.

	* TODO: remove an entry: merge marshal.list.

	* milter/manager/: use milter/core/milter-marshalers.h.

	* TODO: remove an entry: improve log format.

	* milter/core/milter-logger.[ch]: support colorized logging.

	* milter/core/milter-utils.[ch], test/core/test-utils.c: add
	milter_utils_enum_from_string().

	* milter/core/milter-logger.[ch]: make logged tag customizable.

	* milter/core/milter-logger.c
	(milter_log_level_flags_from_string): use
	milter_utils_flags_from_string().

	* milter/core/milter-utils.[ch], test/core/test-utils.c: add
	milter_utils_flags_from_string().

2008-12-01  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* test/manager/test-manager.c: Add reject on evenelope-recipient test.
	* milter/manager/milter-manager-leader.c (milter_manager_leader_body):
	Increment sent_body_count just before milter_server_context_body().
	* milter/manager/milter-manager-leader.c (milter_manager_leader_body):
	If the first child had already returned "skip" reply, just send
	"continue" to MTA without sending "body" command to the first child.
	* tool/milter-test-server.c (cb_skip): If "skip" is received, send
	next command to milter-manger. But actually milter-manager does never
	receive "skip" reply because milter-manager should receive all body
	chunks for other children even if the first child returns "skip". This
	behaviour makes performance worse.
	* milter/server/milter-server-context.c (cb_decoder_skip): Check
	current state is body.
	* milter/manager/milter-manager-children.c (cb_skip): state check is
	done in MilterServerContext.
	* milter/manager/milter-manager-leader.c (cb_error): Reply
	"temporary-failure".
	* milter/manager/milter-manager-children.c: Cleanup. Remove needless
	value.
	* milter/server/milter-server-context.c: Cleanup, remove needless
	value.
	* milter/server/milter-server-context.c: Output MilterServerContext
	name to log.
	* milter/core/milter-utils.[ch]: Added milter_utils_get_enum_name().
	* milter/server/milter-server-context.c: Use
	milter_utils_get_enum_name to reduce log size.
	* milter/manager/milter-manager-leader.c (cb_error): Do nothing if
	error domain is not MILTER_MANAGER_CHILDREN_ERROR.
	* tool/milter-test-server.c (cb_reply_code): Invoke cb_reject(). 

2008-11-28  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/src/toolkit/rb-milter-private.h: add missing
	declaration.

	* test/manager/test-manager.c: add missing <signal.h>.

	* binding/ruby/src/toolkit/rb-milter-socket-address.c: plug a warning.

2008-11-28  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* milter/Makefile.am: added core, client and server to SUBDIRS.
	* Makefile.am: Added libmilter to SUBDIRS.
	* binding/ruby/test/run-test.rb: Fix load path.
	* test/manager/test-children.c, test/manager/test-configuration.c,
	test/manager/test-controller.c, test/manager/test-leader.c: Use
	milter_test_get_base_dir() instead of
	milter_manager_test_get_base_dir().
	* test/manager/Makefile.am: addded libmilter_test_utils.la to LIBS.
	* test/manager/test-manager.c: Added.
	* test/lib/milter-manager-test-utils.[ch]: Remove
	milter_manager_test_get_base_dir().
	* test/lib/milter-manager-test-client.c: Use
	milter_test_get_base_dir().
	* milter/manager/milter-manager.c: Show program name.
	* test/manager/test-manager.c: Added scenario framework. Also run
	milter-test-server.
	* test/manager/test-manager.c: g_strfreev() expects NULL teminated
	array.
	* test/manager/test-manager.c: Starting milter-test-server after
	milter-manager is ready.
	* milter/manager/milter-manager-children.[ch]: If all milters do not
	response on negotiation, emit
	MILTER_MANAGER_CHILDREN_ERROR_NO_NEGOTIATION_RESPONSE.
	Also do not invoke milter_manager_child_start() if no privilege mode.
	* test/manager/test-children.c: Added test_no_negotiation.
	* milter/manager/milter-manager-leader.c (cb_error): if all milters do
	not response on negotiation, send "reject".
	* test/manager/test-manager.c: wait for server reaping.
	* test/manager/test-manager.c: Added a scenario.
	* tool/milter-test-server.c: If "reject" is received on
	envelope-recipient, continure processing.

2008-11-27  Kouhei Sutou  <kou@cozmixng.org>

	* TODO: add entries:
	- write unit test for libmilter.
	- add --disable-milter-manager configure option.
	- add --disable-ruby configure option.

	* binding/ruby/src/manager/Makefile.am,
	milter/manager/Makefile.am, module/configuration/ruby/Makefile.am:
	fix include path.

	* ./: merge milter-toolkit and milter-manager.

	* milter/manager/milter-manager-control-protocol.h,
	milter/manager/milter-manager-control-reply-encoder.[ch],
	test/manager/test-control-reply-encoder.c: implement status reply encode.

	* test/manager/test-configuration.c (setup): ensure remove tmp dir.

	* test/manager/test-children.c: still FIXME...

	* test/lib/milter-manager-test-client.[ch]:
	- add milter_manager_test_clients_collect_all_macros().
	- clear defined macros in each clear_data()!

	* test/lib/milter-manager-test-client.[ch],
	test/lib/milter-test-client.rb: support define-macro.

	* test/lib/milter-manager-test-utils.[ch]
	(milter_manager_test_defined_macros_inspect,
	milter_manager_test_defined_macros_equal): add.

2008-11-27  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* milter/manager/milter-manager-children.[ch]: Added
	milter_manager_children_define_macro().
	* milter/manager/milter-manager-leader.[ch]: Added
	milter_manager_leader_define_macro().
	* test/lib/milter-manager-test-client.[ch]: Added
	getter of define-macro.
	* milter/manager/milter-manager.c: Handle "define-macro" signal from
	MilterClientContext.
	* test/lib/milter-manager-test-client.[ch]: Added
	milter_manager_test_clients_collect_macros.
	* test/lib/milter-manager-test-client.c: Unref macro hash table in
	dispose() not clear_data().
	* test/lib/milter-manager-test-client.c: Macro list data should be a
	MilterManagerTestPair.
	* test/lib/milter-manager-test-scenario.[ch]: Added
	milter_manager_test_scenario_get_pair_list_without_sort().
	* test/manager/test-leader.c: Check macro on "connect".
	* test/fixtures/leader/connect-with-macro.txt: Remove braces from
	macro name.
	* milter/manager/milter-manager-configuration.[ch]: Added
	manager_connection_spec.
	* bindings/ruby/lib/milter/manager.rb: Added manager.connection_spec
	settings.
	* milter/manager/milter-manager.c: Use manager.connection_spec value
	in milter-manager.conf.
	* milter/manager/milter-manager.c: Added --spec option.
	* milter/manager/milter-manager.c: spec from option is prior to the
	one in configuration.

2008-11-26  Kouhei Sutou  <kou@cozmixng.org>

	* milter/manager/milter-manager-control-command-decoder.c
	(decode_get_status),
	test/manager/test-control-command-decoder.c: implement.

	* milter/manager/milter-manager-control-command-encoder.c
	(milter_manager_control_command_encoder_encode_get_status),
	test/manager/test-control-command-encoder.c
	(test_encode_get_status): add.

	* binding/ruby/test/Makefile.am: add missing files.

	* binding/ruby/test/test-control-{reply,command}-encoder.rb:
	follow the below change.

	* milter/manager/milter-manager-control-command-encoder.c,
	milter/manager/milter-manager-control-command-decoder.c,
	milter/manager/milter-manager-control-reply-encoder.c,
	milter/manager/milter-manager-control-reply-decoder.c,
	milter/manager/milter-manager-control-protocol.h,
	test/milter/manager/test-control-*.c: use long command name.

2008-11-26  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* milter/manager/milter-manager-children.c: Invoke milter_statistics
	on both at first and last of child life.
	* milter/manager/milter-manager.c (milter_manager_main): Output error
	message if milter_client_main() fails.
	* milter/manager/milter-manager.c: Fail if invalid spec is specified.
	* milter/manager/milter-manager.c: Output error message on "error"
	signal of MilterClient.
	* milter/manager/milter-manager-children.c: copy header to
	original_headers in "end-of-message" instead of "end-of-header"
	because some milter set MILTER_STEP_NO_END_OF_HEADER flag.
	* milter/manager/milter-manager-leader.c
	(milter_manager_leader_end_of_message):  Set new state to
	END_OF_MESSAGE if the current_state is XX_REPLIED.
	* milter/manager/milter-manager-children.c: Initialize
	process_header_index with 0 in "end-of-message" command.
	* milter/manager/milter-manager-children.c: Do not store some command
	in command_queue.
	* milter/manager/milter-manager-children.c: Also initialize
	processing_header_index with 0 before sending "end-of-message" to next
	child.

2008-11-25  Kouhei Sutou  <kou@cozmixng.org>

	* ui/www/milter-manager-admin/: move to new path.

	* ui/www/milter-manager-admin/: add CRUD for config/milters/.

	* ui/www/milter-manager-admin/: setup testing environment.

	* ui/www/milter-manager-admin/: add /config/milters/.

	* ui/www/milter-manager-admin/: add an admin interface skeleton.

2008-11-23  Kouhei Sutou  <kou@cozmixng.org>

	* test/manager/test-controller.c: fix memory management.

	* test/run-test.sh: support valgrind.

	* milter/manager/milter-manager-configuration.c
	(milter_manager_configuration_load): fix a memory leak.

2008-11-21  Kouhei Sutou  <kou@cozmixng.org>

	* test/: gcut_io_channel_string_new() -> gcut_string_io_channel_new().

	* test/manager/test-controller.c,
	milter/manager/milter-manager-control-command-decoder.c: support reload.

2008-11-21  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* milter/manager/milter-manager-children.c: Emit "delete-header".
	* milter/manager/milter-manager-leader.c: Handle "delete-header"
	signal.

2008-11-20  Kouhei Sutou  <kou@cozmixng.org>

	* milter/manager/milter-manager-control-command-encoder.c,
	test/manager/test-control-command-encoder.c: support reload encode.

	* test/manager/test-controller.c: check reply.

	* test/manager/test-controller.c: cleanup.

2008-11-20  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* milter/manager/milter-manager-children.c: Handle "delete-header"
	signal.
	* test/lib/milter-test-client.rb: Added "--delete-header" option.

2008-11-20  Kouhei Sutou  <kou@cozmixng.org>

	* milter/manager/milter-manager-controller.c,
	test/manager/test-controller.c: implement set-configuration command.

	* milter/manager/milter/manager/milter-manager-configuration.[ch],
	test/manager/test-configuration.c: add
	milter_manager_configuration_save_custom().

	* milter/manager/milter/manager/milter-manager-configuration.[ch],
	module/configuration/ruby/milter-manager-ruby-configuration.c:
	load path is managed in parent configuration class.

	* binding/ruby/lib/milter/manager.rb,
	milter/manager/milter-manager.c, test/manager/test-leader.c:
	follow the above changes.

	* milter/manager/milter-manager-configuration.[ch],
	test/manager/test-configuration.c: add
	milter_manager_configuration_clear().

2008-11-19  Kouhei Sutou  <kou@cozmixng.org>

	* milter/manager/milter-manager-controller.c: follow the recent
	changes.

	* binding/ruby/src/rb-milter-manager-control-decoder.c,
	binding/ruby/src/rb-milter-manager-private.h,
	binding/ruby/src/rb-milter-manager.c,
	binding/ruby/test/test-control-command-decoder.rb,
	binding/ruby/test/test-control-reply-decoder.rb: add
	Milter::Manager::ControlCommandDecoder and
	Milter::Manager::ControlReplyDecoder.

	* binding/ruby/src/rb-milter-manager-control-reply-encoder.c,
	binding/ruby/src/rb-milter-manager-private.h,
	binding/ruby/src/rb-milter-manager.c,
	binding/ruby/test/test-control-reply-encoder.rb: add
	Milter::Manager::ControlReplyEncoder.

	* binding/ruby/src/rb-milter-manager-control-command-encoder.c,
	binding/ruby/src/rb-milter-manager-private.h,
	binding/ruby/src/rb-milter-manager.c,
	binding/ruby/test/test-control-command-encoder.rb,
	binding/ruby/test/milter-manager-encoder-test-utils.rb: add
	Milter::Manager::ControlCommandEncoder.

	* milter/manager/milter-manager-control-reply-{en,de}coder.[ch],
	test/manager/test-control-command-{en,de}coder.c: import -> set.

	* milter/manager/milter-manager-control-reply-encoder.[ch],
	test/manager/test-control-reply-encoder.c: support failure, error
	and configuration.

	* milter/manager/milter-manager-control-reply-encoder.[ch],
	test/manager/test-control-reply-encoder.c: add
	MilterManagerControlReplyEncoder.

	* test/manager/test-control-reply-decoder.c: add a test for
	unknown reply is received.

	* milter/manager/milter-manager-control-reply-decoder.[ch],
	test/manager/test-control-reply-decoder.c: support configuration.

	* milter/manager/milter-manager-control-reply-decoder.[ch],
	test/manager/test-control-reply-decoder.c: support failure and error.

	* milter/manager/milter-manager-control-reply-decoder.[ch],
	test/manager/test-control-reply-decoder.c: add
	MilterManagerControlReplyDecoder.

	* milter/manager/milter-manager-control-command-decoder.c,
	milter/manager/milter-manager-control-command-encoder.c,
	milter/manager/milter-manager-control-protocol.h:
	- MILTER_MANAGER_CONTROL_PROTOCOL_COMMAND_XXX ->
	  MILTER_MANAGER_CONTROL_COMMAND_XXX

	* milter/manager/, test/:
	control-{decoder,encoder} -> control-command-{decoder,encoder}.

	* milter/manager/milter-manager-control-encoder.[ch],
	test/manager/test-control-encoder.c: add.

	* milter/manager/milter-manager-control-decoder.h: cleanup includes.

	* test/manager/test-children.c: cleanup includes.

2008-11-19  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* milter/tools/milter-manager-test-milter.c: Added.
	* milter/manager/milter-manager-headers.[ch]: Removed.
	* milter/manager/milter-manager-children.c,
	test/manager/test-leader.c, test/lib/milter-manager-test-server.[ch],
	test/lib/milter-manager-test-scenario.c: Use MilterHeaders instead
	of MilterManagerHeaders.

2008-11-18  Kouhei Sutou  <kou@cozmixng.org>

	* test/
	- mail -> envelope-from.
	- rcpt -> envelope-recipient.

	* milter/manager/milter-manager-children.c,
	test/manager/test-children.c, test/manager/test-leader.c:
	- MAIL -> ENVELOPE_FROM.
	- RCPT -> ENVELOPE_RECIPIENT.

	* test/lib/milter-test-client.rb: use Milter::ReplyEncoder not
	Milter::Encoder.

	* ./: handler -> agent.

2008-11-18  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* milter/manager/milter-manager-children.c
	(get_first_command_waiting_child_queue): Emit "continue" signal if the
	first child in waiting queue does not need the command because if
	there is no response (i.e. continue or so), MTA does not send a next
	command.
	* test/lib/milter-test-client.rb: Added "--negotiate-flags" option.
	Return the option which has modified in milter-test-client.rb. Also
	the step of the return option is always the value which is set with
	"--negotiate-flags".
	* test/fixtures/leader/negotiate.txt: Set various steps of negotiate
	option.
	* milter/manager/milter-manager-children.c (state_to_command): Set
	server context state before emit "continue" signal.
	* test/manager/test-leader.c: Connect "xx-response" signal before
	sending each command. Also add "no_command_received" option in
	scenario file.
	* test/fixtures/leader/no-body-flag.txt: Added.
	* test/fixtures/leader/*.txt: Added "no_command_received" option if
	"n_recieved = 0" exists.
	* milter/manager/milter-manager-children.[ch]: Emit error even if all milters send
	MILTER_STEP_NO_XX flag and the command is sent.
	* milter/manager/milter-manager-children.c: Check the command can be
	sent before sending the command.
	* milter/manager/milter-manager-children.[ch]: Emit error if all
	milters are already dead.
	* test/fixtures/leader/*.txt: Check
	MILTER_MANAGER_CHILDREN_ERROR_NO_ALIVE_MILTER error.
	Hmm, "no_command_received" option is not used any more..
	* test/manager/test-leader.c (assert_response_common): Remove
	"no_command_received".
	(assert_have_response_helper): Remove should_timeout argument.
	* milter/manager/milter-manager-children.c (get_next_command): Skip
	command which is set to STEP_NO_XX on negotiation.

2008-11-17  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/lib/milter/manager.rb, data/milter-manager.conf:
	support control connection.

	* milter/manager/milter-manager.c: accept control
	connection. (only accept)

	* milter/manager/milter-manager-controller.[ch]: add.

	* milter/manager/milter-manager-configuration.[ch]: add control
	connection spec configuration.

	* test/manager/test-leader.c (do_connect),
	test/manager/test-children.c (do_connect),
	test/manager/test-egg.c (test_connection_spec_error),
	milter/manager/milter-manager-egg.c
	(milter_manager_egg_set_connection_spec): follow the recent
	milter-toolkit changes.

	* milter/manager.h,
	milter/manager/milter-manager-control-decoder.[ch],
	milter/manager/milter-manager-control-protocol.h,
	test/manager/test-control-decoder.c: add milter manager control
	protocol decoder.

	* test/manager/test-leader.c (do_end_of_message),
	test/fixtures/leader/: checked received chunks.

	* test/manager/test-leader.c (do_unknown),
	test/fixtures/leader/unknown.txt: check received unknown commands.

	* ./: controller -> leader.

	* test/manager/test-children.c (test_writing_timeout): wait
	continue signal.

2008-11-17  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* milter/manager/milter-manager-children.c (cb_temporary-failure):
	Emit "temporay-failure" signal while processing END-OF-MESSAGE.
	* milter/manager/milter-manager-children.c (cb_skip): Send a next
	command if END-OF-MESSAGE has been already sent.
	* milter/manager/milter-manager-children.c (cb_skip): Cleanup. Move to
	the next of cb_accept().
	* milter/manager/milter-manager-children.c
	(test_end_of_message_timeout): Set end-of-message timeout zero only
	for the first client.
	* test/fixtures/controller/end-of-message-replaced-body: The second
	client does not reject on BODY and check replaced body chunks on
	END-OF-MESSAGE.
	* milter/manager/milter-manager-headers.[ch]: Added
	milter_manager_headers_length().
	* milter/manager/milter-manager-headers.[ch]: Added
	milter_manager_headers_get_nth_header().
	* milter/manager/milter-manager-headers.c
	(milter_manager_headers_get_nth_header): THe index begins from 1 not
	0.
	* test/lib/milter-manager-test-scenario.c
	(milter_manager_test_scenario_get_pair_list): Set name NULL.
	* test/manager/test-leader.c (do_header): Sort header list before
	assert check.
	* milter/manager/milter-manager-children.c: HEADER command is sent to
	a child sequential to END-OF-MESSAGE command.
	* milter/manager/milter-manager-children.c: DATA command is sent to
	a child sequential to END-OF-MESSAGE command.
	* milter/manager/milter-manager-headers.[ch]: Added
	milter_manager_headers_copy().
	* milter/manager/milter-manager-children.c: Preserve orignal header
	list. TODO: Emit appropiriate xx-header signals when all children
	completed the process.
	* milter/manager/milter-manager-headers.[ch]: Added
	milter_manager_headers_lookup_by_name().
	* milter/manager/milter-manager-headers.[ch]: Added
	milter_manager_headers_find().
	* milter/manager/milter-manager-headers.[ch]: Added
	milter_manager_headers_remove().
	* milter/manager/milter-manager-headers.c
	(milter_manager_headers_change_header): Added a new header if the
	index is greater then the number of headers which has the targert
	name.
	* milter/manager/milter-manager-headers.[ch]: Added
	milter_manager_headers_index_in_same_header_name().
	* milter/manager/milter/manager-children.c: Emit "add-header",
	"insert-header" and "change-header" before the last "end-of-message"
	signal.
	* test/manager/test-leaders.c: Unified "xx-header" signal tests.
	* test/lib/milater-manager-test-scenario.c: Use MilterManagerHeader
	instead of MilterManagerTestHeader.
	* test/lib/milter-manager-test-server.[ch]: Use MilterManagerHeader.
	* milter/manager/milter-manager-children.c
	(emit_signals_on_end_of_message): Remove found header from processing
	list if change-header is emitted.
	* test/lib/milter-manager-test-server.[ch]: Added
	milter_manager_test_server_add_header() to a header on "HEADER"
	command.
	* test/manager/test-leader.c (do_header): Invoke
	milter_manager_test_server_add_header() expicitly.
	* test/lib/milter-manager-test-utis.[ch]: Remove
	MilterManagerTestHeader.

2008-11-16  Kouhei Sutou  <kou@cozmixng.org>

	* test/manager/test-children.c (assert_response_common): wait
	until signal emitted.

	* test/manager/test-controller.c (assert_response_common): wait
	received end-of-message output.

2008-11-14  Kouhei Sutou  <kou@cozmixng.org>

	* test/manager/test-children.c: write a test for writing timeout.

	* test/manager/test-children.c,
	test/fixtures/children/header.txt: rewrite
	end-of-header test as scenario based test.

	* test/manager/test-children.c,
	test/fixtures/children/header.txt: rewrite
	header test as scenario based test.

	* test/manager/test-children.c,
	test/fixtures/children/data.txt: rewrite
	data test as scenario based test.

2008-11-14  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* milter/manager/milter-manager-children.c: Send "BODY" imediately if
	the target child is the first one.
	* test/manager/test-controller.c (do_body): Check response and chunks.
	* test/fixtures/controller/end-of-message-discard.txt,
	test/fixtures/controller/end-of-message-reject.txt,
	test/fixtures/controller/end-of-message-temporary-failure.txt:
	n_received is 1 on end-of-message response because no more process for
	the message if a child returns "REJECT", "DISCARD" or
	"TEMPORARY-FAILURE".
	* test/fixtures/controller/body.txt,
	test/fixtures/controller/body-accept.txt: Check chunk on each body
	command.
	* test/fixtures/controller/body-skip.txt,
	test/fixtures/controller/body-skip-all.txt: Check chunks on each body.
	But I am not sure each client is received correct chunks. I would like
	to write chunks[first-skip-client]=First skip message or something.
	* milter/manager/milter-manager-children.c (cb_finished): Do not
	invoke remove_child_from_queue() if current state is BODY and
	END_OF_MESSAGE.
	* milter/manager/milter-manager-children.c: command_queue ->
	command_waiting_child_queue.
	* milter/manager/milter-manager-children.c: Commands that from
	END-OF-HEADER to END-OF-MESSAGE are sent to a child sequentially.

2008-11-13  Kouhei Sutou  <kou@cozmixng.org>

	* test/manager/test-children.c,
	test/fixtures/children/envelope-recipient.txt: rewrite
	envelope-recipient test as scenario based test.

	* test/manager/test-children.c,
	test/fixtures/children/envelope-from.txt: rewrite envelope-from
	test as scenario based test.

	* test/manager/test-children.c,
	test/fixtures/children/helo.txt: rewrite helo test as
	scenario based test.

	* test/manager/test-children.c,
	test/fixtures/children/connect.txt: rewrite connect test as
	scenario based test.

	* test/manager/test-children.c,
	test/fixtures/children/negotiate-retry-fail.txt: rewrite retry
	failure on negotiate test as scenario based test.

	* milter/manager/milter-manager-headers.c: remove needless function.

	* test/lib/milter-manager-test-scenario.[ch]: support egg creation.

	* test/lib/milter-manager-test-client.[ch]
	(milter_manager_test_client_get_command): add.

	* test/manager/test-children.c,
	test/fixtures/children/negotiate-retry.txt: rewrite retry on
	negotiate test as scenario based test.

2008-11-13  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* milter/manager/milter-manager-children.c (send_body_to_child): NULL
	check of body_file. Also ref and unref for should_sent_body_milters.
	* milter/manager/milter/manager-children.c (send_body_to_child):
	Remove should_sent_body_milters before NULL check of body_file.
	* test/manager/test-children.c (test_end_of_message_timeout): wait
	until end-of-message-timeout signal is received.
	* test/lib/milter-test-client.rb: info_abort to get abort received
	status from MilterManagerTestClient.
	* test/fixtures/controller/abort.txt ->
	tetst/fixtures/controller/abort-on-end-of-message.txt: Renamed.
	* test/lib/milter-manager-test-scenario.c: Fix memory leak.
	* test/lib/milter-manager-test-client.[ch]: MilterManagerTestClient
	has its name. milter_manager_test_client_new() needs its name. Added
	milter_manager_test_client_find().
	* test/lib/milter-manager-test-client.[ch]: Added name getter.
	* test/lib/milter-manager-test-client.[ch]: Added
	milter_manager_test_client_wait_reply(). It just waits from a
	specified client.
	* test/lib/milter-manager-test-scenario.[ch]: Added
	milter_manager_test_scenario_get_locale_string().
	 The name should be change more appropriate name.
	* test/lib/milter-manager-test-scenario.[ch]: 
	milter_manager_test_scenario_get_locale_string() ->
	milter_manager_test_scenario_get_string_with_sub_key.
	Also add G_KEY_FILE_KEEP_TRANSLATIONS flag.
	* test/lib/milter-manager-test-client.c
	(milter_manager_test_client_wair_reply): reverse return value of
	getter.
	* test/manager/test-controller.c: Proof-of-concept of
	reponse[client10026] entry in scenario file. It is only enabled to be
	used in bort, need to be generalization.
	* milter/manager/milter-manager-headers.[ch]: Added.
	* milter/manager/milter-manager-children.c: Manage headers (not
	completed yet). 
	(cb_reject_code): Invoke cb_reject() at the end of the function.

2008-11-12  Kouhei Sutou  <kou@cozmixng.org>

	* test/lib/milter-manager-test-utils.[ch]
	(milter_manager_test_wait_signal): support timeout check.
	* test/manager/test-children.c, test/manager/test-controller.c:
	use milter_manager_test_wait_signal() with timeout check.

	* test/lib/milter-manager-test-server.[ch]
	(milter_manager_test_server_wait_signal): move to ...
	* test/lib/milter-manager-test-utils.[ch]
	(milter_manager_test_wait_signal): ... here.
	* test/manager/test-controller.c: use
	milter_manager_test_wait_signal() instead of
	milter_manager_test_server_wait_signal().

	* test/lib/milter-test-client.rb: support regular expression for
	chunk specification.

2008-11-12  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* fixtures/controller/body-accept.txt,
	fixtures/controller/body-skip.txt,
	fixtures/controller/body-skip-all.txt: "BODY" command now sends
	conjunct message at once. i.e. "First lineSecond line". So just send a
	"BODY" command for a while.
	* milter/manager/milter-manager-children.c: Now "BODY" chunks is sent
	on "END-OF-MESSAGE" command.  But "ERROR! - invalid state" message
	output here and threre.
	* test/manager/test-controller.c: Do not check response in body action
	since "BODY" command does not send chunks to milter until
	"END-OF-MESSAGE" command is sent. Also not clear test client data on
	body command.
	* milter/manager/milter-manager-children.[ch]: Added
	milter_manager_children_get_state().
	* milter/manager/milter-manager-children.c: Set current state to
	MILTER_MANAGER_CHILDREN_STATE_BODY before send body.
	* milter/manager/milter-manager-children.c (cb_continue): Do nothing
	if body state. Fix invalid state error.
	* milter/manager/milter-manager-children.[ch]: Now
	MilterManagerChildren has its state represented by
	MilterServerContextState. Also manage body and end-of-message queue
	with should_be_sent_body_milters list. But invalid state error
	reappears in "body accept" test.
	* milter/manager/milter-manager-children.c (remove_child_from_queue):
	Do not emit signal while BODY state.
	* milter/manager/milter-manager-children.c (cb_finished): Output
	state to log.
	* test/fixtures/controller/quit.txt: n_received of quit-response is 1
	since the first child has been quited in end-of-message state so
	quit-response is received only from the second child in
	milter-manager.
	* milter/manager/milter-manager-children.c: Replace body chunk if
	"REPLACE-BODY" reply is received and send the replaced body to the
	child. Changed test name, "replace separate" -> "replace overwrite".
	* milter/manager/milter-manager-children.c: Cleanup skip process.
	* test/manager/test-controller.c: Also check chunks in end-of-message.
	* test/fixtures/controller/body-skip-*.txt: check body response and
	chunks.
	* milter/manager/milter-manager-children.c: Preserve the chunk of
	END-OF-MESSAGE aside from body chunks.

2008-11-12  Kouhei Sutou  <kou@cozmixng.org>

	* test/manager/test-children.c,
	test/fixtures/children/negotiate.txt: add a initial but dirty
	scenario support.

	* test/fixtures/controller/negotiate.txt: remove a garbage.

2008-11-11  Kouhei Sutou  <kou@cozmixng.org>

	* milter/manager/milter-manager-children.c: fix reference count bug.

	* test/lib/milter-test-client.rb (MilterTestClient#read_packet):
	ignore EOF error.

	* test/manager/test-controller.c: 50 -> 100.

	* test/manager/test-controller.c: move scenario related codes to ...
	* test/lib/milter-manager-test-scenario.[ch],
	test/lib/milter-manager-test-client.[ch]: ... here.

2008-11-11  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* test/lib/milter-manager-test-client.c: Support multi-line response
	from milter-test-client.rb.
	* milter/manager/milter-manager-child.[ch]: Remove name property.
	* milter/manager/milter-manager-children.h: Added
	MilterManagerChildrenState.
	* milter/manager/milter-manager-children.[ch]: Preserve reply status
	for each MilterServerContextState.
	* milter/manager/milter-manager-controller.c: multipule body support.
	* milter/manager/milter-manager-controller.c: Do not set
	END_OF_MESSAGE state if the current state BODY.

2008-11-10  Kouhei Sutou  <kou@cozmixng.org>

	* test/manager/test-children.c: fix a memory leak.

	* test/manager/test-children.c,
	test/lib/milter-test-client.rb: fix timeout test. but not good yet...

	* test/lib/milter-manager-test-client.c: cleanup.

	* test/lib/milter-manager-test-client.[ch],
	test/manager/test-controller.c,
	test/fixtures/controller/negotiate.txt: checks all received
	negotiate option.

	* test/lib/milter-manager-test-client.[ch],
	test/lib/milter-test-client.rb, test/manager/test-controller.c:
	add received negotiate option check.

	* test/manager/test-controller.c,
	test/lib/milter-manager-test-client.[ch],
	test/fixtures/controller/connect.txt: add received connect info check.

2008-11-10  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* test/lib/milter-test-client.rb: Set @next_state :abort
	instead of :quit if no_response option is set since if :quit
	state is set, TCPServer loop exits before
	"end_of_message_timeout" signal is emitted.
	* milter/manager/milter-manager-egg.[ch]: Add timeout values should be
	 gdboule.
	* milter/manager/milter-manager-children.c (expire_all_children): copy
	priv->milters before expiring.
	* milter/manager/milter-manager-children.[ch]: Added
	milter_manager_children_set_retry_connect_time.

2008-11-10  Kouhei Sutou  <kou@cozmixng.org>

	* test/manager/test-controller.c,
	test/fixtures/controller/helo.txt: check all received FQDNs on helo.

	* test/manager/test-controller.c: remove needless variables.

	* test/manager/test-controller.c,
	test/fixtures/controller/envelope-from-accept-all.txt:
	rewrite a test for accept from all clients on envelope-from as
	scenario based test.

	* test/manager/test-controller.c,
	test/fixtures/controller/envelope-from-accept.txt:
	rewrite a test for accept on envelope-from as scenario
	based test.

	* test/manager/test-controller.c,
	test/fixtures/controller/envelope-from-reject-and-accept.txt:
	rewrite a test for reject and accept on envelope-from as scenario
	based test.

	* test/manager/test-controller.c,
	test/fixtures/controller/envelope-from-reject-and-discard.txt:
	rewrite a test for reject and discard on envelope-from as scenario
	based test.

2008-11-09  Kouhei Sutou  <kou@cozmixng.org>

	* test/manager/test-controller.c,
	test/fixtures/controller/envelope-from-discard.txt: rewrite a test
	for discard on envelope-from as scenario based test.

	* milter/manager/milter-manager-children.c,
	test/fixtures/controller/envelope-recipient-*.txt: discard is
	important status rather than reject even if it is received on
	envelope-recipient.

	* test/lib/milter-test-client.rb: add --insert-header,
	--change-header and --remove-header.

	* test/manager/test-controller.c: remove needless code.

2008-11-07  Kouhei Sutou  <kou@cozmixng.org>

	* test/manager/test-controller.c, test/fixtures/controller/*.txt:
	rewrite tests as scenario based test.

	* milter/manager/milter-manager-children.c: expires all children
	if children's reply status is reject.

	* test/manager/test-controller.c,
	test/fixtures/controller/envelope-recipient-accept*.txt:
	rewrite envelope-recipient received accept test as scenario based
	test.

	* test/manager/test-controller.c,
	test/fixtures/controller/envelope-recipient-reject.txt:
	rewrite envelope-recipient received reject test as scenario based
	test.

	* test/lib/milter-test-client.rb: more convenient.

	* test/manager/test-controller.c,
	test/fixtures/controller/envelope-recipient-temporary-failure-all.txt:
	rewrite envelope-recipient received temporary-failure from all
	clients test as scenario based test.

	* test/manager/test-controller.c: remove needless test.

	* test/lib/milter-manager-test-client.[ch]: add pair values
	collect function.

	* test/lib/milter-manager-test-utils.[ch]: cleanup.

	* test/manager/test-controller.c: remove needless test.

	* test/lib/milter-manager-test-client.[ch]: add string values
	collect function.
	* test/manager/test-controller.c, test/fixtures/controller/: use
	the above function.

	* test/manager/test-controller.c,
	test/fixtures/controller/body-accept.txt: rewrite
	body accept test as scenario based test.

	* test/manager/test-controller.c,
	test/fixtures/controller/body-skip-all.txt: rewrite
	body skipped by all clients test as scenario based test.

	* test/manager/test-controller.c,
	test/fixtures/controller/end-of-message-chunk.txt: rewrite
	end-of-message test as scenario based test.

	* test/manager/test-controller.c,
	test/fixtures/controller/progress.txt: rewrite
	progress test as scenario based test.

	* test/lib/milter-manager-test-server.[ch]: get_XXXed_YYYs ->
	get_received_XXX_YYYs.
	* test/manager/test-controller.c, test/fixtures/controller/:
	follow the above change.

2008-11-07  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* milter/manager/milter-manager-children.c: Send "NEGOTIATE" after "ready"
	signal from a child is received.
	test_retry_negotiate_failure() and test_reading_timeout() fail yet.
	* milter/manager/milter-manager-children.c: Cleanup negotiation code.
	All tests passes now. Handle "connection-timeout" of
	MilterServerContext.
	* milter/manager/milter-manager-children.c: Remove unused value
	(quarantine_readon).

2008-11-06  Kouhei Sutou  <kou@cozmixng.org>

	* test/manager/test-controller.c,
	test/fixtures/controller/replay-code-invalid.txt: rewrite
	invalid reply-code test as scenario based test.

	* test/lib/milter-manager-test-server.[ch]: reply_code -> replied_codes.

	* test/manager/test-controller.c,
	test/fixtures/controller/replay-code.txt: rewrite
	reply-code test as scenario based test.

	* test/manager/test-controller.c,
	test/fixtures/controller/replace-body-separate.txt: rewrite
	replace-body from two clients test as scenario based test.

	* test/lib/milter-manager-test-server.[ch]: replace -> replaced.

	* test/manager/test-controller.c,
	test/fixtures/controller/replace-body.txt: rewrite
	replace-body test as scenario based test.

	* test/lib/milter-manager-test-server.[ch]: delete -> deleted.

	* test/manager/test-controller.c,
	test/fixtures/controller/delete-recipient.txt: rewrite
	delete-recipient test as scenario based test.

	* test/lib/milter-test-client.rb, test/manager/test-children.c:
	add no-response action and use it.

	* test/lib/milter-manager-test-utils.[ch]: ValueWithParam -> Pair.

	* test/lib/milter-manager-test-server.[ch]: collect all values.

	* test/manager/test-controller.c,
	test/fixtures/controller/add-recipient.txt: rewrite add-recipient test
	as scenario based test.

	* test/manager/test-controller.c,
	test/fixtures/controller/change-from.txt: rewrite change-from test
	as scenario based test.

	* test/lib/milter-manager-test-server.[ch]: collect change-from
	data as hash table.

	* test/manager/test-controller.c,
	test/fixtures/controller/quarantine.txt: add a test for quarantine.

	* test/manager/test-controller.c: remove needless add-header test.

	* test/manager/test-controller.c,
	test/fixtures/controller/add-header.txt: add add-header test.

	* test/manager/test-child.c: ensure restoring the current locale.

	* test/lib/milter-test-client.rb: cleanup --reply-code.

	* test/lib/milter-test-client.rb: support more flexible actions in
	end-of-message.

	* test/lib/milter-test-client.rb: not Array!

2008-11-06  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* test/lib/milter-manager-test-utils.[ch]: added
	milter_manager_test_header_compare.
	* test/lib/milter-test-client.rb: Send progress on end-of-message
	anyway.
	* test/lib/milter-manager-test-server.[ch]: Replace body should be a
	GList.
	* test/lib/milter-test-client.rb: "reply-code" option.
	* milter/manager/milter-manager-children.c,
	milter/manager/milter-manager-controller.c: Return
	MILTER_STATUS_REJECT if "reply-code" is received.
	* test/lib/milter-test-client.rb: Do not override action if reply-code
	option is not set.
	* milter/manager/milter-manager-controller.c(cb_shutdown,
	cb_connection_failure): SHUTDOWN and CONNECTION_FAILURE are not sent
	from milter but Sendmail may use them so output message to log.
	* milter/manager/milter-manager-child.[ch]: Remove
	milter_manager_child_new_with_timeout.
	* milter/manager/milter-manager-children.c (cb_finished): Output
	message to log. 
	* test/manager/test-children.c: Added reading timeout test. The test
	sometimes fails maybe.

2008-11-05  Kouhei Sutou  <kou@cozmixng.org>

	* test/manager/test-controller.c, test/fixtures/controller/: use
	scenario based test for tests of quit, abort and unknown.

	* test/manager/test-controller.c, test/fixtures/controller/: split
	scenario.

	* test/lib/milter-manager-test-client.[ch]: support clearing data.

	* test/manager/test-controller.c,
	test/fixtures/controller/body-skip.txt,
	test/fixtures/controller/connect.txt: support nested import.

	* test/manager/test-controller.c,
	test/fixtures/controller/body-skip.txt,
	test/fixtures/controller/negotiate.txt: implement import.

	* test/manager/test-controller.c,
	test/fixtures/controller/body-skip.txt: add status test.

	* test/lib/milter-manager-test-client.[ch],
	test/lib/milter-test-client.rb: collect FQDN, envelope from and
	envelope recipient data.

	* test/manager/test-controller.c,
	test/fixtures/controller/body-skip.txt: add scenario based test.

	* test/lib/Makefile.am: set CUT_RELATIVE_PATH.

	* test/manager/test-controller.c, test/fixtures/controller/: use
	GKeyFile to create MilterOption.

	* test/lib/milter-test-client.rb: override.

	* test/lib/milter-test-client.rb: cleanup.

2008-11-05  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* test/lib/milter-manager-test-server.c: Use g_idle_add_full with
	G_PRIORITY_DEFAULT to wait for receiving signals.
	* test/manager/test-controller.c (test_body): Create its own test data
	structure.
	* test/manager/test-controller.c: Added add-header test. TODO: check
	header names and values.
	* test/lib/milter-manager-test-utils.[ch]: Added
	MilterManagerTestHeader struct.
	* test/lib/milter-manager-test-server.[ch]: Added
	milter_manager_test_server_get_headers.
	* test/lib/milter-manager-test-utils.[ch]: Added
	milter_manager_test_header_inspect.
	* test/lib/milter-manager-test-utils.[ch]: Added
	milter_manager_test_header_equal.
	* test/manager/test-controller.c: Check header name and value.
	* test/manager/test-controller.c: Send different header from
	test-client respectively.
	* test/lib/milter-manager-test-server.c: Preserve recipient and from.
	* test/manager/test-controller.c: Use
	milter_server_context_set_state() instead of
	milter_server_context_end_of_message().
	* test/lib/milter-manager-test-server.c: Accessors.
	* test/lib/milter-test-client.rb: "--envelope-from" option.
	* test/lib/milter-test-client.rb: "--change-from" option.
	* test/lib/milter-test-client.rb: "--delete-recipient" option.
	* test/lib/milter-manager-test-utils.[ch]: MilterManagerTestHeader has
	an index.
	* test/lib/milter-manager-test-utils.[ch]: Added
	MilterManagerTestValueWithParam.
	* test/lib/milter-test-client.rb: "--add-recipient" option.
	* milter/manager/milter-manager-children.c
	(child_negotiate_without_retry): Emit "negotiate-reply" if previous
	negotiation is established.

2008-11-04  Kouhei Sutou  <kou@cozmixng.org>

	* test/lib/milter-test-client.rb, test/manager/test-controller.c:
	support --add-header.

	* test/lib/milter-test-client.rb: add more info.

	* test/manager/test-controller.c (test_end_of_message_quarantine):
	use GCutStringIOChannel's pipe mode.

2008-11-04  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* milter/manager/milter-manager-controller.c (cb_reply_code): Handle
	error from milter_client_context_set_reply().
	* test/manager/test-controller.c: Added a test for accepting in body.
	* test/lib/milter-manager-test-sever.[ch]: Added a new object for MTA
	substitute. The test fails yet.
	* test/manager/test-controller.c: Work around for GCutStringIOChannel.
	* test/lib/milter-manager-test-server.[ch]: Added get_n_XXs accesors.
	* test/manager/test-controller.c: Set MilterOption to
	MilterManagerTestServer explicitly.

2008-11-03  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/lib/milter/manager.rb: fix inverted bug.

2008-11-02  Kouhei Sutou  <kou@cozmixng.org>

	* data/milter-manager.conf: comment out optional configuration.

	* binding/ruby/lib/milter/manager.rb: improve error report.

	* data/milter-manager.conf, binding/ruby/lib/milter/manager.rb:
	support milter filter.

	* binding/ruby/lib/milter/manager.rb, data/milter-manager.conf:
	improve configuration file format.

	* milter/manager/milter-manager-children.c: fix passed data.

	* milter/manager/milter-manager-children.c: fix object lifetime.

	* milter/manager/milter-manager-child.c: use WEXITSTATUS().

	* milter/manager/milter-manager-child.c: support G_SPAWN_SEARCH_PATH.

	* test/: use configuration file in test/fixtures/configuration/.

	* milter/manager/milter-manager-controller.c: fix children write
	result handling.

	* milter/manager/milter-manager.c (milter_manager_main): change
	default port number: 9999 -> 10025.

2008-10-31  Kouhei Sutou  <kou@cozmixng.org>

	* test/manager/test-controller.c: cleanup.

	* milter/manager/milter-manager-children.c,
	test/manager/test-children.c: remove needless quarantine.

	* test/lib/milter-test-client.rb,
	milter/manager/milter-manager-children.c,
	test/manager/test-controller.c: support quarantine.

	* test/lib/milter-test-client.rb: upcase!

	* ./: receipt -> recipient.

	* test/lib/milter-test-client.rb: fix typos.

2008-10-31  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* test/manager/test-controller.c (test_envelope_receipt_reject): Check
	REJECT status.
	* test/manager/test-controller.c (test_envelope_receipt_reject): Also
	check going on accept further command.
	* test/lib/milter-test-clienr.rb: In ENVELOPE_RECEIPT, REJECT status
	is just rejecting the current receipt address.
	* test/manager/test-controller.c: Added a test for discarding in
	ENVELOPE_RECEIPT.
	* test/manager/test-controller.c: Added a test for temporary failure in
	ENVELOPE_RECEIPT.
	* test/manager/test-controller.c: Added a test for accepting in
	ENVELOPE_RECEIPT.
	* test/manager/test-controller.c
	(test_envelope_receipt_temporary_failure): Also check going on accept
	further command.
	* test/manager/test-controller.c: Added a test for returning "ACCEPT"
	and "TEMPORARY FAILURE" and "DISCARD".
	* milter/manager/milter-manager-children.[ch]: Important status
	depends on the current MilterServerContextState.
	* test/manager/test-controller.c: Added a test for returning "ACCEPT"
	and "DISCARD" from each child respectively.
	* test/manager/test-controller.c: Added a test that both children
	returns "TEMPORARY FAILURE".
	* test/manager/test-controller.c: Added a test that both children
	returns "ACCEPT".
	* milter/manager/milter-manager-children.c: Do not send "QUIT" command
	to the child which returns "SKIP" status. "SKIP" status means just
	skip further BODY command, it should be received next other
	command(i.e. END_OF_MESSAGE by ordinary). The test fails yet.
	* test/lib/milter-test-server.rb: Added info_XX methods.
	* milter/manager/milter-manager-children.c,
	milter/manager/milter-manager-controller.c: Handle reply-code.

2008-10-30  Kouhei Sutou  <kou@cozmixng.org>

	* test/manager/test-controller.c: add a test for rejected from
	child. it's not completed. FIXME!!!

	* test/lib/milter-manager-test-client.[ch]
	(milter_manager_test_client_set_arguments): add.

	* test/lib/milter-test-client.rb: support action.

	* milter/manager/milter-manager-children.c,
	test/manager/test-children.c: add tests for
	milter_manager_children_is_important_status(). need more.

	* milter/manager/milter-manager-children.[ch]
	(milter_manager_children_is_important_status): export.

	* test/manager/test-children.c (test_connect_pass): add.

	* test/manager/test-children.c (test_connect): add.

	* test/manager/test-children.c (test_negotiate): cleanup.

	* test/manager/test-children.c: use MilterManagerTestClient.

	* test/lib/milter-manager-test-client.[ch]
	(milter_manager_test_clients_wait_reply)
	(milter_manager_test_clients_collect_n_received): add.

	* test/manager/test-controller.c: use the above functions.

	* test/lib/Makefile.am: make libmilter-manager-test.la shared library.

2008-10-30  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* test/manager/test-controller.c: Revert the last commit.
	* milter/manager/milter-manager-children.c (cb_finished): Emit reply
	status if the child is the last one.
	* milter/manager/milter-manager-children.c (cb_finished): Emit reply
	status only if the reply status is not MILTER_STATUS_NOT_CHANGE(i.e.
	reply status has been changed in MilterManagerChildren.)
	* test/manager/test-controller.c: Remove needless
	g_main_context_itration and wait "unknown-response".
	* milter/manager/milter-manager-children.c: Retry negotiation to a
	milter when restart a milter. TODO: the test is not implemented yet.
	* milter/manager/milter-manager-egg.[ch]: Added command_options
	property.
	* milter/manager/milter-manager-configuration.c: privilege mode is a
	property.
	* milter/manager/milter-manager-children.c (child_negotiate):
	Reinitialize error value with NULL before invoking
	milter_manager_child_start().
	* milter/manager/milter-manager-child.c: stdout and stderr of a milter
	to /dev/null.
	* test/manager/test-children.c (test_retry_negotiate): To kill
	milter-test-client.rb sends "QUIT" command because the process which
	was run	from MilterManagerChild cannot kill.
	* milter/manager/milter-manager-controller.c: Send QUIT command to
	milters if "mta-timeout" signal is received.
	* module/configuration/ruby/milter-manager-ruby-configuration.c: Use
	G_DEFINE_DYNAMIC_TYPE.
	* milter/manager/milter-manager-controller.c: g_signal_emit_by_name()
	does not need detail GQuark.
	* milter/manager/milter-manager-children.c: Fix typo.
	* test/manager/test-children.c: added test_connect_half_pass().
	* milter/manager/milter-manager-children.c
	(milter_manager_children_is_important_status): Return TRUE or FALSE.

2008-10-29  Kouhei Sutou  <kou@cozmixng.org>

	* test/manager/test-controller.c: use MilterManagerTestClient.
	* test/lib/milter-manager-test-client.[ch]: add missing features.

	* test/lib/milter-manager-test-client.[ch]: add.

	* test/manager/test-children.c: add a test for negotiate. TOO DUTY!!!

	* binding/ruby/test/: follow the recent changes.

	* test/manager/test-controller.c: improve reply waiting.

	* test/manager/test-controller.c: cleanup.

	* milter/manager/milter-manager-children.c,
	test/manager/test-children.c: append a child not prepend.

	* milter/manager/milter-manager-egg.[ch], test/manager/test-egg.c:
	add hatched signal.

	* milter/manager/milter-manager-child.h: MANAGER_TYPE -> TYPE_MANAGER.

2008-10-29  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* milter/manager/milter-manager-children.c: Initialize quitted_milters
	with NULL and the first element should be itself not priv->milters.
	* data/milter-manager.conf, test/manager/test-controller.c: A new baby
	was born.
	* test/manager/test-egg.c: Unset MILTER_LOG_LEVEL.
	* milter/manager/milter-manager-children.c: Remove from reply queue if
	timeout is occurred.
	* milter/manager/milter-manager-children.c (cb_skip, cb_quarantine):
	Remove reply queue if state check fails.
	* test/manager/test-controller.c (test_quit, test_abort,
	test_unknown): Invoke g_main_context_iteration until all pending
	events were processed.
	* milter/manager/milter-manager-children.c: If all children sends
	"SKIP", emit "skip" signal.
	* milter/manager/milter-manager-children.c (cb_reject, cb_discard):
	Send "QUIT" command to a filter.
	* milter/manager/milter-manager-children.c:
	MILTER_STATUS_TEMPORARY_FAILURE should be very weak because if a
	filter sends TEMPORARY FAILURE, drop the filter only. All the other
	filters should not be affected.
	* milter/manager/milter-manager-children.c:
	MILTER_STATUS_TEMPORARY_FAILURE is not a critical status.
	* milter/manager/milter-manager-children.c: Added
	compare_reply_status.
	* milter/manager/milter-manager-children.c: Handle QUARANTINE reply.
	* milter/manager/milter-manager-children.c (cb_reject, cb_discard):
	Remove the second call of quit_child().
	* milter/manager/milter-manager-children.c (cb_skip, cb_quarantine):
	Send "QUIT" command if state check fails.
	* milter/manager/milter-manager-children.c: Expire the child if error
	is received.
	* milter/manager/milter-manager-children.c (cb_skip, cb_quarantine):
	Emit reply signal even if state check fails.
	* test/manager/test-controller.c: Check the number of received reply.
	Initialize client_end_of_header_received with 0.
	* milter/manager/milter-manager-children.c: Receive "finished" signal
	from each child and remove it from reply queue.
	* emitable -> emittable.
	* milter_error_emittable_emit_error -> milter_error_emittable_emit.
	* milter/manager/milter-manager-childrenc.: Emit "finished" signal if
	all children have gone away!
	* milter/manager/milter-manager-controller.c: Emit "finished" signal
	when receiving "finished" signal from MilterManagerChildren.
	* milter/manager/milter-manager-children.c: Expire a child only if
	"finished" signal is received or time out error.
	* test/manager/test-controller.c (test_unknown): Also check "finished"
	signal is received.
	* test/manager/test-controller.c: Send quit command after abort
	command.

2008-10-28  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/, data/milter-manager.conf: use egg.

	* milter/manager/milter-manager-configuration.[ch]: use egg not child.

	* milter/manager/milter-egg.[ch], test/manager/test-egg.c: support
	connection spec and hatch.

	* milter/manager/milter-manager-children.[ch]:
	- add milter_manager_children_length().
	- don't unref child while signal callback. decoder owned by
	the unrefed child may be processing.

	* milter/manager/milter-manager-child.[ch]: add child's name accessors.

	* test/manager/test-controller.c: spawn -> egg.

	* ./: spawn -> egg.

	* binding/ruby/test/test_spawn.rb: add tests for accessors.

2008-10-28  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* milter/manager/milter-manager-configuration.[ch]: Remove timeout
	values since these values depend on filter.
	* milter/manager/milter-manager-children.c: Emit compiled reply signal
	when all filters have returned response.
	* milter/manager/milter-manager-children.c: Also added child to queue in
	body command.
	* milter/manager/milter-manager-children.c: If the status from a
	filter is "ACCEPT" or "REJECT" or "DISCARD", send "QUIT" command and
	remove the filter from children list.
	* milter/manager/milter-manager-children.c (cb_temporary_failure):
	expire the filter if the state is a connection-oriented routine (i.e.
	NEGOTIATE or CONNECT or HELO).
	* milter/manager/milter-manager-children.c (cb_reject): expire the
	filter except ENVELOPE_RECEIPT routine. In the case of
	ENVELOPE_RECEIPT, reject the receipt and continue the session.
	* milter/manager/milter-manager-children.c: milter_error if SKIP reply
	is received not in BODY. send BODY command if skip reply has not been
	received yet.
	* milter/manager/milter-manager-children.c: NEGOTIATE is not a
	connection-oriented routine, QUIT is the one of it.
	* milter/manager/milter-manager-children.c: Emit "skip" signal if all
	children are received "SKIP" reply.
	* milter/manager/milter-manager-children.c (compile_reply_status):
	MILTER_STATUS_CONTINUE < MILTER_STATUS_ACCEPT <
	MILTER_STATUS_TEMPORARY_FAILURE < MILTER_STATUS_DISCARD <
	MILTER_STATUS_REJECT.
	* milter/manager/milter-manager-children.c: "progress" and
	"quarantine" reply are only allowed in end of message session.
	* milter/manager/milter-manager-children.c: Unref MilterChild in
	teardown_server_context_signals.
	* milter/manager/milter-manager-children.c: Close connection to a
	filter if timeout is happend.
	* milter/manager/milter-manager-controller.c: Cleanup unused timeout
	codes.
	* test/manager/test-child.c: Set MILTER_LOG_LEVEL environment value to
	suppress milter's log output.

2008-10-27  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/test/: add.

	* binding/ruby/src/rb-milter-manager.c,
	binding/ruby/src/rb-milter-manager-spawn.c,
	binding/ruby/src/rb-milter-manager-private.h,
	binding/ruby/src/Makefile.am: add spawn.

	* milter/manager.h: add spawn.

	* milter/manager/milter-manager-spawn.[ch],
	test/manager/test-spawn.c: add command.

	* milter/manager/milter-manager-spawn.[ch],
	test/manager/test-spawn.c: add user name.

	* milter/manager/milter-manager-child.c (child_watch_func): cleanup.

	* test/manager/test-controller.c: remove debug code.

	* test/manager/test-spawn.c: add tests for timeout.

	* milter/manager/milter-manager-spawn.[ch],
	test/manager/test-spawn.c: add.

	* milter/manager/milter-manager-controller.c,
	test/lib/milter-test-client.rb,
	test/manager/test-controller.c: support unknown command.

	* milter/manager/milter-manager-controller.c,
	test/manager/test-controller.c: support abort command.

	* milter/manager/milter-manager-controller.c,
	test/manager/test-controller.c: support quit command.

	* milter/manager/milter-manager-controller.c,
	test/manager/test-controller.c: support end-of-message command.

	* milter/manager/milter-manager-children.c: end-of-message isn't
	affected by MILTER_STEP_NO_BODY.

	* test/lib/milter-test-client.rb: end-of-message signal may
	receive chunk.

	* test/manager/test-controller.c: handle all step.

	* test/lib/milter-test-server.rb
	(MilterTestServer#sender_address): return Milter::SocketAddress
	not packed string.

	* milter/manager/milter-manager-children.c
	(milter_manager_children_end_of_message): shorten.

2008-10-27  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* milter/manager/milter-manager-children.c: Merge each MilterOption
	from filter.
	* milter/manager/milter-manager-children.c: MilterManagerConfigration
	property.
	* milter/manager/milter-manager-controller.c: Remove
	MilterMacrosRequests from private values.
	* milter/manager/milter-manager-children.c: Emit "error" signal.
	* milter/manager/milter-manager-children.c: Emit "error" if the daemon
	of child filter could not be started.
	* milter/manager/milter-manager-children.c: Check each command is
	needed for a child filter before invoking the command.
	* milter/manager/milter-manager-children.c: Emit "negotiate-reply"
	signal when all children filters returns "negotiate-reply".
	* milter/manager/milter-manager-controller.c: Connect to "error" signal
	of MilterManagerChildren.
	* milter/manager/milter-manager-childrenc.c: Emit "negotiate-reply"
	with its own (i.e. merged or combined )MilterOption and
	MilterMacrosRequests. And milter_manager_children_negotiate() returns
	FALSE if a filter fails on negotiation.
	* milter/manager.h: Include milter-manager-children.h.
	* milter/manager/milter-manager-objects.h: Added.
	* milter/manager/milter-manager-configuration.h: Move typedef of
	MilterManagerConfiguration into milter-manager-objects.h.
	* milter/manager/milter-manager-children.[ch]:
	milter_manager_children_new() now needs a MilterManagerConfiguration
	object.
	* milter/manager/milter-manager-controller.c: Include
	milter-manager-children.h.
	* test/manager/test-controller.c: Support for prural children.
	* milter/manager/milter-manager-configuration.[ch]: sending timeout ->
	writing timeout.
	* milter/manager/milter-manager-child.[ch]: Added
	milter_manager_child_new_with_timeout().
	* milter/manager/milter-manager-children.c,
	milter/manager/milter-manager-controller.c: sending timeout -> writing
	timeout.
	* test/manager/test-controller.c: Set client_ready and client_reaped
	TRUE in the head of run_spawn().
	* milter/manager/milter-manager-children.c: Emit each reply signals
	till after all child's signals are received.
	* milter/manager/milter-manager-childre.c:  Emit "error" signal with
	correct object.

2008-10-24  Kouhei Sutou  <kou@cozmixng.org>

	* milter/manager/milter-manager-controller.c,
	test/manager/test-controller.c: support body command.

	* milter/manager/milter-manager-controller.c,
	test/manager/test-controller.c: support end-of-header command.

	* ./: support coverage.

	* milter/manager/milter-manager-controller.c,
	test/lib/milter-test-client.rb, test/manager/test-controller.c:
	support header command.

	* milter/manager/milter-manager-controller.c,
	test/manager/test-controller.c: support data command.

	* milter/manager/Makefile.am: add missing milter-manager-controller.h.

	* milter/manager/milter-manager-controller.c: child -> children.

	* milter/, bindings/src/, module/configuration/ruby/:
	MILTER_MANAGER_TYPE_XXX -> MILTER_TYPE_MANAGER_XXX.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/src/rb-milter-manager-configuration.c,
	binding/ruby/src/rb-milter-manager-child.c,
	binding/ruby/src/rb-milter-manager-private.h,
	binding/ruby/src/rb-milter-manager.c: child milter -> child.

	* TODO: add: MilterManagerMother

2008-10-24  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* milter/manager/milter-manager-child-milter.c: Use g_spawn_close_pid.
	* test/manager/test-child-milter.c: Exit error test.
	* milter/manager/milter-manager-controller.c: negotiate_reply signal
	has a MilterMacrosRequests.
	* milter/manager/milter-manager-controller.c: Merge
	MilterMacrosRequest in negotiate-reply signal.
	* milter/manager/milter-manager-controller.c: NULL check barrier for
	MilterMacrosRequests.
	* milter/manager/*: MilterManagerChildMilter -> MilterManagerChild.
	* milter/manager/milter-manager-children.[ch]: Added.
	* milter/manager/milter-manager-children.c: MilterManagerChildren now
	uses MilterReplySignals.
	* milter/manager/milter-manager-children.[ch]: Added server_context
	methods.
	* milter/manager/milter-manager-children.c: Emit each reply signals
	depends on conditions. TODO: bunch each child signals.
	* milter/manager/milter-manager-configuration.[ch],
	milter/manager/milter-manager-controller.[ch]: Use
	MilterManagerChildren. test_data() fails yet.

2008-10-23  Kouhei Sutou  <kou@cozmixng.org>

	* test/manager/test-controller.c: follow the below changes.

	* milter/manager/milter-manager.c: create controller for each session.

	* milter/manager/milter-manager-configuration.[ch]: add dummy
	create function.

	* milter/manager/milter-manager-controller.[ch]: accept client context.

2008-10-23  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* milter/manager/milter-manager-child-milter.[ch]: Emit errors when
	child milter produces a core dump or exits.

2008-10-23  Kouhei Sutou  <kou@cozmixng.org>

	* module/configuration/ruby/milter-manager-ruby-configuration.c:
	set methods.

	* milter/manager/, test/manager/:
	milter_manager_configuration_new() accepts properties.

	* milter/manager/milter-manager-controller.[ch]: follow up the
	below changes.

	* milter/, module/, test/: ruby controller -> ruby configuration.

	* module/: controller -> configuration.

	* test/lib/milter-test-client.rb: fix timeout timing.

2008-10-22  Kouhei Sutou  <kou@cozmixng.org>

	* module/controller/ruby/milter-manager-ruby-controller.c,
	test/manager/test-controller.c: set timeout but problems still exist.

	* test/lib/milter-test-client.rb (MilterTestClient#invalid_state):
	fix argument.

	* module/controller/ruby/milter-manager-ruby-controller.c,
	test/manager/test-controller.c: handle envelope-receipt.

	* module/controller/ruby/milter-manager-ruby-controller.c,
	test/manager/test-controller.c: handle envelope-from.

	* module/controller/ruby/milter-manager-ruby-controller.c,
	test/manager/test-controller.c: handle helo.

	* module/controller/ruby/milter-manager-ruby-controller.c,
	test/manager/test-controller.c: handle connect.

	* test/manager/test-child-milter.c (test_start): output nothing.

	* test/manager/test-controller.c, test/lib/milter-test-client.rb,
	module/controller/ruby/milter-manager-ruby-controller.c,
	milter/manager/milter-manager.c: write test that uses
	milter-test-client.rb.

	* test/lib/milter-test-client.rb: add.

2008-10-22  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* milter/manager/milter-manager-child-milter.c: Use
	milter_utils_set_error_with_sub_error().
	* milter/manager/milter-manager.c,
	milter/manager/milter-manager-controller.[ch],
	module/controller/ruby/milter-manager-ruby-controller.c: Handle
	"mta-timeout" signal from MilterClientContext.

2008-10-21  Kouhei Sutou  <kou@cozmixng.org>

	* milter/manager/milter-manager-child-milter.c: don't use
	g_set_error_literal().

	* test/: setup controller's test environment.

2008-10-21  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* milter/manager/milter-manager-child-milter.[ch]: Added
	milter_manager_child_milter_start().
	* milter/manager/milter-manager-child-milter.c: Do not use
	G_SPAWN_DO_NOT_REAP_CHILD since MilterManagerChildMilter does not care
	about the child process future.
	* milter/manager/milter-manager-child-milter.c: Added command line
	options.
	* test/manager/test-configuration.c: gcut_assert_equal_child_milters
	-> milter_assert_equal_child_milters.
	* milter/manager/milter-manager-child-milter.c:
	milter_manager_child_milter_start() returns GError.
	* module/controller/ruby/milter-manager-ruby-controller.c: start child
	milter process if connection fails.
	* milter/manager/milter-manager-child-milter.c: Added user and
	group. Cleanup.
	* milter/manager/milter-manager-child-milter.[ch]: Set uid and gid.
	* milter/manager/milter-manager-child-milter.[ch]: Added
	MILTER_MANAGER_CHILD_MILTER_ERROR_NO_PREVILEGE_MODE.
	* milter/manager/milter-manager-child-milter.c: Check command value.
	* milter/manager/milter-manager-child-milter.c: Use properties.
	* milter/manager/milter-manager-configuration.[ch]: Added
	milter_manager_configuration_is_privilege_mode.
	* module/controller/ruby/milter-manager-ruby-contoroller.c: Use
	milter_manager_configuration_is_privilege_mode.
	* milter/manager/milter-manager-configuration.[ch]: Added
	milter_manager_configuration_get_return_status_if_filter_unavailable.
	* module/controller/ruby/milter-manager-ruby-contoroller.c: Use
	milter_manager_configuration_get_return_status_if_filter_unavailable.
	* milter/manager/milter-manager-configuration.[ch]: Added
	get_XX_timeout().
	* milter/manager/milter-manager.c (setup_context_signals): gpointer ->
	MilterManagerContoroller.

2008-10-20  Kouhei Sutou  <kou@cozmixng.org>

	* test/lib/milter-test-server.rb: make customizable.

	* test/lib/milter-test-server.rb: add a milter server implemented
	by Ruby for testing milter manager.

	* test/manager/: move to test here.

	* test/lib/: milter-test-utils -> milter-manager-test-utils.

2008-10-16  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* module/controller/ruby/milter-manager-ruby-controller.c:
	"negotiate-reply" signal accompanies with GList not GHashTable.

2008-10-15  Kouhei Sutou  <kou@cozmixng.org>

	* module/controller/ruby/milter-manager-ruby-controller.c:
	negotiate -> negotiate-reply.

	* ./: close -> quit.

2008-10-15  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* milter/manager/milter-manager.c: Connect to "connection-established"
	instead of MilterClientContextSetupFunc.

2008-10-10  Kouhei Sutou  <kou@cozmixng.org>

	* module/controller/ruby/milter-manager-ruby-controller.c: add
	experimental server side handling. MilterServerContext should emit
	negotiate-response signal.

	* data/milter-manager.conf: use spec.

	* binding/ruby/lib/milter/manager.rb: support connection_spec.

	* milter/module/milter-manager-controller.[ch],
	module/controller/ruby/milter-manager-ruby-controller.c,
	binding/ruby/lib/milter/manager.rb,
	milter/manager/milter-manager.c:
	- search a configure file in load paths.
	- use status returned by controller.

	* configure.ac, Makefile.am, data/Makefile.am,
	data/milter-manager.conf: add sample configuration file.

	* binding/ruby/src/: bind some methods for
	MilterManagerConfiguration and MilterManagerChildMilter.

	* binding/ruby/lib/milter/manager.rb: support child milter define
	API.

	* milter/manager/milter-manager-child-milter.[ch]: accept name.

	* milter/manager/milter-manager.c: show log to stdout.

	* milter/manager/milter-manager-ruby-internal.h: support rb_errinfo().

	* module/controller/ruby/Makefile.am: support milter_logger().

	* module/controller/ruby/milter-manager-ruby-controller.c: guard
	error on Ruby.

	* milter/manager/milter-manager-context.[ch]: remove.
	* milter/manager/milter-manager.c: use MiliterManagerController
	directly.

	* milter/manage/milter-manager-controller.[ch],
	module/controller/ruby/milter-manager-ruby-controller.c: load()
	receives file name.

2008-10-09  Kouhei Sutou  <kou@cozmixng.org>

	* milter/manager/milter-manager.c: handle SIGINT.

	* module/controller/: create.

	* module/ruby/: move to ...
	* module/controller/ruby/: ... here.

	* configure.ac, module/ruby/milter-manager-ruby-controller.c,
	binding/ruby/: set Ruby related paths.

	* configure.ac, module/manager/milter-manager-controller.c: set
	module related path.

	* module/ruby/Makefile.am: remove needless variable.

	* module/ruby/Makefile.am: fix rpath.

	* milter/: add module based controller.
	* module/: implement Ruby based controller module.
	* binding/: build as extension library.
	* src/: split milter-manger program.

2008-10-08  Kouhei Sutou  <kou@cozmixng.org>

	* milter/manager/, binding/: support configuration file load
	written by Ruby but there are many problems...

	* milter/manager/, test/: MilterManagerConfiguration collects
	MilterManagerChildMilter.

2008-10-07  Kouhei Sutou  <kou@cozmixng.org>

	* milter/manager/: make MilterManagerConfiguration GObject.

	* configure.ac, milter/: support Ruby embedding.

	* ./: move milter/{core,client,server} and libmilter to
	milter-toolkit package.
