2011-01-26  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/Makefile.am (ruby_glib2_0_90_5_files): add missing
	pkg-config.rb.

2011-01-26  Kouhei Sutou  <kou@clear-code.com>

	* ./: 1.6.4 -> 1.6.5.

	* tool/Makefile.am: remove a garbage slash.

	* configure.ac: 1.6.4 -> 1.6.5.

	* NEWS*: add 1.6.5 entry.

	* tool/Makefile.am: don't install milter-performance-analyzer.

	* binding/ruby/lib/milter/client/command-line.rb: work --user and
	--group.

	* binding/ruby/src/toolkit/rb-milter-client.c: bind
	milter_client_drop_privilege().

2011-01-26  Kenji Okimoto  <okimoto@clear-code.com>

	* tool/milter-manager-log-analyzer
	(MilterManagerReportGraphGenerator#parse_authentication_results):
	fix regular expression. Add TODO comment and about formal
	definition of "Authentication-Results" header.

	* test/tool/test-log-analyzer.rb
	(TestLogAnalyzer#test_parse_authentication_results): add.

2011-01-25  Kouhei Sutou  <kou@cozmixng.org>

	* milter/server/milter-server-context.c: check reply after "quit"
	is sent. This case is caused when milter manager's connection
	checker detects disconnection when a server sends a request but
	doesn't receive response.
	e.g.:
	  MTA          milter-manager           server           milter
	     -header->
	                              -header->
	                                                -header->
	           (detect disconnection)
	                                      (not read)(<-continue-)
	    <-temp-fail-
	                              -abort->
	                                                 -abort->
	                              -quit->
	                                                 -quit->
	                                        (read)   <-continue-
                                             UNEXPECTED!!!
	Reported by Kenji Shiono. Thanks!!!

	* milter/server/milter-server-context.c: use common debug log
	format for server name.

2011-01-24  Kouhei Sutou  <kou@cozmixng.org>

	* data/applicable-conditions/sendmail-compatible.conf: guess
	SMTP server address by netstat.
	Patch by Kenji Shiono. Thanks!!!

	* binding/ruby/lib/milter/manager/netstat-connection-checker.rb,
	binding/ruby/test/manager/test-netstat-connection-checker.rb:
	also collect local and foreign address from netstat.

	* binding/ruby/lib/milter/manager/netstat-connection-checker.rb
	(Milter::NetstatConnectionChecker#connected): fix a typo.
	Patch by Kenji Shiono. Thanks!!!

2011-01-24  Nobuyoshi Nakada  <nakada@clear-code.com>

	* milter/client/milter-client.c (milter_client_fork): set worker ID.
	(milter_client_get_worker_id): new method to get worker ID.
	(milter_client_fork): should set different worker IDs for each
	processes.

2011-01-24  Kouhei Sutou  <kou@clear-code.com>

	* tool/milter-performance-analyzer, tool/Makefile.am: add.

	* binding/ruby/sample/Makefile.am (dist_sample_ruby_DATA): add
	milter-reject-nil-sender.rb.

	* binding/ruby/sample/milter-reject-nil-sender.rb: add.

	* binding/ruby/sample/milter-reject-empty-body.rb: add shebang.

	* binding/ruby/lib/milter/client/command-line.rb:
	- handle SIGHUP, SIGINT and SIGTERM.
	- add --handle-signal option.

	* binding/ruby/lib/milter/client.rb: support reload callback.

	* binding/ruby/lib/milter/client/command-line.rb
	(Milter::Client::CommandLine#run): handle interrupt.

	* binding/ruby/sample/milter-reject-empty-body.rb: add.

	* binding/ruby/lib/milter/client.rb: support result message only
	customize on reject and temporary-failure.

2011-01-24  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/lib/milter/manager/netstat-connection-checker.rb: add
	manager.netstat_connection_checker to share the checker.
	Suggested by Kenji Shiono. Thanks!!!

2011-01-20  Kouhei Sutou  <kou@cozmixng.org>

	* milter/core/milter-syslog-logger.[ch],
	milter/client/milter-client.[ch],
	milter/manager/milter-manager-main.c,
	milter/manager/milter-manager.c,
	binding/ruby/src/toolkit/rb-milter-client.c,
	tool/milter-test-client.c,
	binding/ruby/lib/milter/client/command-line.rb,
	test/core/test-syslog-logger.c: make syslog facility customizable
	via API.

	* configure.ac, test/lib/milter-test-utils.c: don't use mkdtemp().

2011-01-20  Kouhei Sutou  <kou@clear-code.com>

	* tool/milter-performance-check: flush at each periodical report.

2011-01-20  Kouhei Sutou  <kou@cozmixng.org>

	* NEWS*: add 1.6.4 entry.

	* ./: 1.6.3 -> 1.6.4.

	* milter/client/milter-client.c (milter_client_run): use accept
	loop only for libev by default.

	* debian/control, debian/rules,
	apt/milter-manager-depended-packages: don't use system Ruby/GLib2.

	* debian/rules: add unexpected deleted configuration modules.

	* configure.ac: 1.6.3 -> 1.6.4.

	* NEWS*: 2011-01-19 -> 2011-01-21.

	* milter/manager/milter-manager.c: uses n_workers configuration.

	* debian/rules: fix path.

2011-01-19  Kouhei Sutou  <kou@cozmixng.org>

	* debian/rules: add missing *.pc.

	* rpm/centos/milter-manager.spec.in: add missing ruby-milter.pc.

	* doc/reference/Makefile.am (generated_xml_files): fix a typo.

	* doc/milter-performance-check.rd*: add --n-additional-lines.

	* NEWS*: add --flood option.

	* apt/build-in-chroot.sh: support parallel build.

	* NEWS*: add 1.6.3 entry.

	* milter/client/milter-client.c (milter_client_create_event_loop):
	log the current event loop backend.

2011-01-19  Kouhei Sutou  <kou@clear-code.com>

	* NEWS.ja: adding...

	* doc/milter-performance-check.rd*: add --flood.

	* tool/milter-performance-check: --flood-mode -> --flood.

	* test/tool/test-server.c: fix double free.

	* test/server/test-server-context-command.c (pump_all_events): fix
	double free.

	* milter/client/milter-client.c: use one event loop by
	default. This change make libev backend workable. Yey!

	* doc/reference/Makefile.am,
	doc/reference/milter-manager-docs.sgml: include
	milter-report-statistics document.

	* doc/milter-test-client.rd*: fix markup.

	* doc/milter-performance-check.rd*: change reference to
	milter-report-statistics.

	* doc/milter-report-statistics.rd*: add.

	* doc/milter-performance-check.rd*: add --report-periodically option.

	* test/lib/milter-test-utils.h: use GLib compatible library.

	* test/lib/milter-test-glib-compatible.[ch]: define
	g_hash_table_get_keys() with old GLib < 2.14.0.

	* test/lib/milter-manager-test-utils.c
	(milter_manager_test_pair_compare): don't use g_strcmp0().

	* doc/configuration.rd*: add a description about {client_addr}
	into Sendmail Compatible applicable condition.
	Suggested by Kenji Shiono. Thanks!!!

	* doc/install-to-*: add {client_addr} to milter_connect_macros in
	Postfix configurations.
	Suggested by Kenji Shiono. Thanks!!!

	* doc/install-to-debian.rd*, doc/install-to-ubuntu.rd*: use
	apt-key adv for register Debian package GPG key.

2011-01-18  Kouhei Sutou  <kou@cozmixng.org>

	* milter/client/milter-client.c	(run_worker): use the same event
	loop for accept in worker.

	* milter/client/milter-client.c	(run_master): remove needless
	accept loop.

	* milter/client/milter-client.c
	(multi_thread_process_client_channel): fix a memory leak.

	* milter/client/milter-client-runner.h (milter_client_runner_new):
	remove needless declaration.

2011-01-17  Kouhei Sutou  <kou@cozmixng.org>

	* milter/client/milter-client.[ch] (milter_client_session_started)
	(milter_client_session_finished): add.

	* milter/client/milter-client.[ch] (milter_client_is_processing): add.

	* milter/client/milter-client.[ch]
	(milter_client_create_event_loop): publish.

	* milter/client/milter-client-runner.[ch],
	milter/client/milter-client-single-thread-runner.c: add quit method.

	* milter/client/milter-client-single-thread-runner.[ch]: just add.

	* milter/client/milter-client-runner.[ch]: just add.

	* TODO: add: milter-server: disable define macros on HEADER and
	BODY. Macro definitions on those states are invalid in
	libmilter. Wow!

2011-01-17  Kouhei Sutou  <kou@clear-code.com>

	* tool/milter-performance-check: use dRuby for updating statistics
	from children for real-time periodical statistic report.

	* tool/milter-performance-check: re-support --n-workers.

	* tool/milter-performance-check: MilterBenchmark ->
	MilterPerformanceChecker.

	* tool/milter-performance-check: implement periodical statistics
	report.

	* tool/milter-performance-check: MilterPerformanceTool ->
	MilterBenchmark.

	* tool/milter-performance-check: create Statistics class.

	* tool/milter-performance-check: just add --report-periodically
	option.

	* milter/core/milter-agent.c (milter_agent_shutdown): shutdown
	reader before writer.

	* milter/core/milter-agent.c (milter_agent_shutdown): remove
	a duplicated tag in log.

2011-01-17  Nobuyoshi Nakada  <nakada@clear-code.com>

	* tool/milter-test-client.c (option_entries): fix typo.

2011-01-17  Kouhei Sutou  <kou@cozmixng.org>

	* milter/client/milter-client.c: use separted accept watch
	callbackes, accept callback and error callback, for accept socket.

2011-01-16  Kouhei Sutou  <kou@cozmixng.org>

	* milter/core/Makefile.am,
	milter/core/milter-libev-event-loop.c: don't use libev 3 API.

	* binding/ruby/lib/milter/client/command-line.rb: add
	--event-loop-backend option.

	* binding/ruby/src/manager/rb-milter-manager-configuration.c: move
	EventLoopBackend to ...
	* binding/ruby/src/toolkit/rb-milter-client.c: ... here.
	* binding/ruby/test/manager/test-configuration-loader.rb,
	binding/ruby/test/toolkit/test-client.rb: follow the above change.

	* milter/core/milter-agent.[ch],
	milter/core/milter-reader.c,
	milter/core/milter-writer.[ch],
	milter/manager/milter-manager-children.c,
	milter/server/milter-server-context.[ch],
	tool/milter-test-server.c,
	test/: make write asynchronize. This improves cuncurrency on many write
	block case, e.g. many delete-recipinet with Postfix (Postfix's
	delete-recipient's O(n^2) :<), but decrease performance on many
	normal cases. :<...

	* binding/ruby/lib/milter/client/command-line.rb: show --n-workers
	default value.

2011-01-15  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/lib/milter/client/command-line.rb: packet buffer
	size is 0 by default

	* milter/client/milter-client-context.c: log on auto-flush.

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

	* milter/client/milter-client-context.[ch],
	milter/client/milter-client.c,
	milter/manager/milter-manager-configuration.c,
	test/client/test-client-context-base.c,
	test/client/test-client.c,
	test/manager/test-configuration.c,
	tool/milter-test-client.c,
	doc/milter-test-client.rd*: disable packet buffer by default.

	* milter/manager/milter-manager.c: connect between milter client
	and configuration for default packet buffer.

	* milter/manager/milter-manager-configuration.[ch]
	(milter_manager_configuration_get_default_packet_buffer_size)
	(milter_manager_configuration_set_default_packet_buffer_size): add.
	* test/manager/test-configuration.c: add a test for the above.

	* milter/client/milter-client.[ch]: make default packet buffer
	size accessor customizable.

	* milter/client/milter-client.h,
	milter/client/milter-client-context.h: specify packet buffer size unit.

	* tool/milter-test-client.c, doc/milter-test-client.rd*:
	add --packet-buffer-size option.

	* milter/server/milter-server-context.c: support progress.

	* milter/server/milter-server-context.c,
	test/server/test-server-context-signals.c: remove needless timeout
	reset.
	Reported by Kenji Shiono. Thanks!!!

	* binding/ruby/lib/milter/client/command-line.rb:
	add --packet-buffer-size option.

	* binding/ruby/src/toolkit/rb-milter-client.c,
	binding/ruby/test/toolkit/test-client-context.rb: bind
	milter_client_create_context(),
	milter_client_get_default_packet_buffer_size() and
	milter_client_set_default_packet_buffer_size().

	* milter/client/milter-client.c: support property access for
	default-packet-buffer-size.

	* tool/milter-test-server.c: improve output on quarantine.
	* test/tool/test-server.c: work quarantine test again.

	* milter/client/milter-client.[ch]
	(milter_client_create_context),
	(milter_client_get_default_packet_buffer_size),
	(milter_client_set_default_packet_buffer_size): add.
	* test/client/test-client.c: add a test for the above.

	* milter/client/milter-client.h: documents custom func related
	functions.

	* binding/ruby/src/toolkit/rb-milter-client-context.c,
	binding/ruby/test/toolkit/test-client-context.rb: bind
	milter_client_context_get_packet_buffer_size() and
	milter_client_context_set_packet_buffer_size().

	* milter/client/milter-client-context.[ch]
	(MILTER_CLIENT_CONTEXT_PACKET_BUFFER_SIZE),
	(milter_client_context_get_packet_buffer_size),
	(milter_client_context_set_packet_buffer_size): add.
	* test/client/test-client-context-base.c: add a test for the above.

	* milter/server/milter-server-context.c,
	test/server/test-server-context-signals.c: include more error
	information on invalid state error.

	* test/server/test-server-context-signals.c
	(test_quarantine_on_invalid_state): add a test for
	quarntine on invalid state.

	* test/server/test-server-context-signals.c
	(test_progress_on_invalid_state): add a test for
	progress on invalid state.

	* test/server/test-server-context-signals.c
	(test_replace_body_on_invalid_state): add a test for
	replace-body on invalid state.

	* test/server/test-server-context-signals.c
	(test_delete_recipient_on_invalid_state): add a test for
	delete-recipient on invalid state.

	* test/server/test-server-context-signals.c
	(test_add_recipient_on_invalid_state): add a test for add-recipient on
	invalid state.

	* test/server/test-server-context-signals.c
	(test_change_from_on_invalid_state): add a test for change-from on
	invalid state.

	* test/server/test-server-context-signals.c
	(test_delete_header_on_invalid_state): add a test for delete-header on
	invalid state.

	* test/server/test-server-context-signals.c
	(test_change_header_on_invalid_state): add a test for change-header on
	invalid state.

	* test/server/test-server-context-signals.c
	(test_insert_header_on_invalid_state): add a test for insert-header on
	invalid state.

	* test/server/test-server-context-signals.c
	(test_add_header_on_invalid_state): add a test for add-header on
	invalid state.

	* milter/server/milter-server-context.c,
	test/server/test-server-context-signals.c: add state check on
	quarantine.

	* milter/server/milter-server-context.c,
	test/server/test-server-context-signals.c: add state check on
	progress.

	* milter/server/milter-server-context.c,
	test/server/test-server-context-signals.c: add state check on
	delete-recipient.

	* binding/ruby/src/toolkit/rb-milter-client.c: undefine PACKAGE_*
	macros because Ruby's config.h defines them. :<

2011-01-14  Kouhei Sutou  <kou@clear-code.com>

	* milter/core/milter-libev-event-loop.c (iterate): support may_block.

	* test/tool/test-server.c: always use GLib event loop for GCutEgg.

	* tool/milter-performance-check: add a missing +1.

	* tool/milter-report-statistics: set fallback values.

	* tool/milter-report-statistics: run n-tops for 20 over processes.

	* tool/milter-report-statistics: retrieve info for all processed by a
	top command.

2011-01-14  Nobuyoshi Nakada  <nakada@clear-code.com>

	* milter/client/milter-client.c (milter_client_run): fix condition.
	(client_run_workers): change log message.

	* milter/core/milter-libev-event-loop.c (evcond_from_g_io_condition)
	(evcond_to_g_io_condition): deal with EV_ERROR.

	* milter/client/milter-client.c (client_run_workers): renamed.
	(milter_client_run): run master here.

	* binding/ruby/src/toolkit/rb-milter-event-loop.c (rb_loop_run):
	custom run using ruby.

	* milter/client/milter-client.c (client_invoke_workers): use
	listen_channel if it is already bound.

2011-01-14  Kouhei Sutou  <kou@clear-code.com>

	* doc/milter-performance-check.rd*: add document for
	--report-failure-responses.

	* tool/milter-performance-check: add --report-failure-responses option.

	* tool/milter-performance-check: show error messages.

	* tool/milter-performance-check: show reject messages.

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

	* binding/ruby/src/toolkit/rb-milter-error-emittable.c: copy
	should not be freed error.

	* tool/milter-performance-check: use meaningful name.

	* tool/milter-performance-check: cleanup.

	* tool/milter-performance-check: write error messages to STDERR.

	* tool/milter-report-statistics: use 5 columns for CPU time.

2011-01-14  Nobuyoshi Nakada  <nakada@clear-code.com>

	* doc/milter-test-client.rd, doc/milter-test-client.rd.ja:
	describe --n-workers option.
	describe --event-loop-backend option.

	* tool/milter-test-client.c: add --n-workers option.
	add --event-loop-backend option.

	* milter/client/milter-client.c (milter_client_run_master): fix
	inverse condition.

2011-01-13  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/test/milter-event-loop-test-utils.rb
	(MilterEventLoopTestUtils#create_event_loop): handle invalid value.

	* binding/ruby/test/milter-multi-process-test-utils.rb: cleanup.

	* binding/ruby/test/milter-multiprocess-test-utils.rb: rename to ...
	* binding/ruby/test/milter-multi-process-test-utils.rb: ... this.

	* test/client/test-client.c (test_negotiate, test_helo): don't
	omit n_workes == 0.

2011-01-13  Kenji Okimoto  <okimoto@clear-code.com>

	* binding/ruby/lib/milter/client/command-line.rb
	(Milter::Client::CommandLine#remove run_worker): removed obsolete
	method.

	* binding/ruby/lib/milter/client/command-line.rb
	(Milter::Client::CommandLine#run): follow the above change.

2011-01-13  Nobuyoshi Nakada  <nakada@clear-code.com>

	* binding/ruby/src/toolkit/rb-milter-client.c (client_custom_fork):
	return 0 in child process.
	needs config.h for HAVE_RB_FORK.

2011-01-13  Kouhei Sutou  <kou@clear-code.com>

	* milter/client/milter-client-context.[ch],
	test/client/test-client-context-address.c,
	test/client/test-client-context-modify.c: add empty input check to
	add_recipient, delete_recipient and change_from.

	* milter/client/milter-client-context.c: buffer packets on end of
	message.

	* milter/core/milter-agent.[ch]: make flush() method.

2011-01-13  Nobuyoshi Nakada  <nakada@clear-code.com>

	* binding/ruby/src/toolkit/rb-milter-client.c (client_run_master)
	(client_run_worker): removed obsolete methods.

	* binding/ruby/test/milter-multiprocess-test-utils.rb
	(MilterMultiprocessTestUtils): utility module for
	MILTER_N_WORKERS.
	(MilterMultiprocessTestUtils#setup_workers): set n_workers to
	argument, not instance variable, and set @n_workers always.

	* binding/ruby/test/toolkit/test-client.rb (TestClient#test_n_workers):
	fix for MILTER_N_WORKERS.

2011-01-13  Kouhei Sutou  <kou@clear-code.com>

	* binding/ruby/test/toolkit/test-logger.rb
	(TestLogger#test_log_item_constant): follow the below change.

	* milter/core/milter-logger.[ch]: support program name and pid in log.

	* milter/core/milter-writer.c (write_to_io_channel): don't flush.
	flush manually.
	* milter/core/milter-agent.c,
	milter/manager/milter-manager-children.c,
	test/core/test-writer.c, test/manager/test-controller-context.c,
	test/manager/test-process-launcher.c: follow the above change.

	* ./: suppress memory allocation for milter protocol packet
	encoding but it doesn't affect speed. :<

2011-01-13  Nobuyoshi Nakada  <nakada@clear-code.com>

	* milter/core/milter-utils.h (MilterUtilsPipeMode): moved from
	milter/manager/milter-manager-main.c to be shared from
	milter/client/milter-client.c.

	* milter/client/milter-client.c (client_invoke_workers): check the
	result of listen.
	(milter_client_run): invert pipe_fds.
	(client_invoke_workers): do not wait accepting thread.
	(worker_watch_master): force server_fd to close.
	(worker_watch_master): should not close server_fd directly.
	(client_invoke_workers): should not clean up client in master
	processe twice.
	(milter_client_listen): already refered from listen_channel.

	* test/client/test-client.c (cut_setup): set n_workers from
	environment variable MILTER_N_WORKERS.
	(cut_setup): use g_strtoull.
	(test_negotiate, test_helo, test_n_workers): fix tests for
	multi-process mode.

2011-01-12  Nobuyoshi Nakada  <nakada@clear-code.com>

	* milter/client/milter-client.c (milter_client_run): run in
	multi-process mode if n_workers is greater than 0.

	* binding/ruby/src/toolkit/rb-milter-client.c (client_custom_fork):
	use fork method of ruby.
	(client_initialize): initialize.
	(client_main): fix typo in warning message.

	* module/configuration/ruby/milter-manager-ruby-configuration.c
	(init_ruby): use ruby_process_options to initialize encoding etc.

2011-01-12  Kouhei Sutou  <kou@clear-code.com>

	* binding/ruby/lib/milter/client/command-line.rb: use signal
	number isntead of signal name because signal name isn't supported
	in Ruby 1.8.5.

	* test/lib/milter-manager-test-utils.c (string_equal): use
	strcmp() instead of g_strcmp0() because both strings aren't NULL.

	* binding/ruby/src/toolkit/rb-milter-core-private.h (GERROR2RVAL):
	define for Ruby/GLib2 0.15.0.

2011-01-12  Nobuyoshi Nakada  <nakada@clear-code.com>

	* milter/client/milter-client.c (default_fork): use wrapper
	function.

2011-01-12  Kouhei Sutou  <kou@clear-code.com>

	* milter/core/milter-libev-event-loop.c,
	milter/core/milter-glib-event-loop.c: don't use constructed class
	method because GLib 2.12 bundled on CentOS doesn't support it.

	* test/client/test-client.c (test_custom_fork): use common test
	style.
	- move static variable declarations to the top.
	- initialize static variable in cut_setup().
	- use meaningful value for test value.

	* milter/client/milter-client.c: PROP_N_WORKER_PROCESSES ->
	PROP_N_WORKERS.

	* Makefile.am, configure.ac, gio-unix-compatible/: remove needless
	bundled GIO.

	* milter/client/milter-client.[ch], milter/client/Makefile.am,
	binding/ruby/src/toolkit/rb-milter-client.c: remove needless GIO
	related code.

	* binding/ruby/lib/milter/client/command-line.rb: share the
	listening channel with each workers.

	* binding/ruby/src/toolkit/rb-milter-client.c,
	binding/ruby/test/toolkit/test-client.rb: bind milter_client_listen().

	* milter/client/milter-client.[ch]: master process doesn't accept
	and pass accepted FD to worker processes. Worker processes accept
	the listening FD with block in accept thread.

2011-01-12  Nobuyoshi Nakada  <nakada@clear-code.com>

	* milter/client/milter-client.c (milter_client_fork): new method.
	(milter_client_daemonize): use milter_client_fork.

	* milter/manager/milter-manager-main.c (start_process_launcher_process):
	ditto.

	* milter/core/milter-event-loop.c (MilterEventLoopPrivate): use
	typedefed name.

2011-01-12  Kouhei Sutou  <kou@clear-code.com>

	* rpm/centos/milter-manager.spec.in:
	- install milter-report-statistics.
	- move milter-performance-check to milter-manager from
	libmilter-toolkit because it requires Ruby.

	* debian/rules: install milter-report-statistics.

2011-01-12  Nobuyoshi Nakada  <nakada@clear-code.com>

	* doc/configuration.rd (manager.n_workers): documented.

	* binding/ruby/lib/milter/manager.rb
	(Milter::ConfigurationLoader::ManagerConfiguration#n_workers)
	(Milter::ConfigurationLoader::ManagerConfiguration#n_workers=):
	add accessors.
	(Milter::ConfigurationLoader::ManagerConfiguration#n_workers):
	n_workers is always Integer.
	(Milter::ConfigurationDumper#dump): dump n_workers.

	* binding/ruby/test/toolkit/test-client.rb (TestClient#test_n_workers):
	add test.

	* libev-4.03: imported.

	* milter/client/milter-client.h (MILTER_CLIENT_MAX_N_WORKERS):
	renamed

	* milter/manager/milter-manager-configuration.c
	(milter_manager_configuration_get_n_workers)
	(milter_manager_configuration_set_n_workers): add new property.

	* milter/client/milter-client.c (get_property): fix wrong object.

2011-01-12  Kouhei Sutou  <kou@clear-code.com>

	* doc/configuration.rd*: fix examples and default value of
	manager.fallback_status and manager.fallback_status_at_disconnect.
	Reported by Kenji Shiono. Thanks!!!

	* tool/milter-report-statistics: accept float value as --interval value.

2011-01-12  Nobuyoshi Nakada  <nakada@clear-code.com>

	* milter/client/milter-client.h (MILTER_CLIENT_MAX_N_WORKER_PROCESSES):
	moved from milter-client.h

	* milter/client/milter-client.c (set_property, get_property): deal
	with PROP_N_WORKER_PROCESSES.

	* milter/core/milter-event-loop.c (milter_event_loop_run_without_custom):
	replaced "hook" with "custom".
	(milter_event_loop_set_custom_run_func)
	(milter_event_loop_get_custom_run_func): add accessors.

	* milter/client/milter-client.c (milter_client_get_n_workers)
	(milter_client_set_n_workers): add new property.

2011-01-12  Kouhei Sutou  <kou@clear-code.com>

	* binding/ruby/lib/milter/client/command-line.rb: show unix domain
	socket mode in octal.

2011-01-12  Nobuyoshi Nakada  <nakada@clear-code.com>

	* milter/client/milter-client.c (milter_client_set_event_loop_backend):
	should not return void expression.

	* milter/core/milter-event-loop.c (MilterEventLoopPrivate): add
	custom run hook.

2011-01-12  Kouhei Sutou  <kou@clear-code.com>

	* html/index.html, doc/install-to-centos.rd*: update
	milter-manager-repository version: 1.0.0-0 -> 1.0.0-1.

	* yum/milter-manager-repository.spec: don't install GPG key for
	RPM by hand.

2011-01-12  Kouhei Sutou  <kou@cozmixng.org>

	* TODO: add more examples for MAIL FROM parameters and RCPT TO
	parameters.

2011-01-11  Kouhei Sutou  <kou@cozmixng.org>

	* TODO: add: [1.7.x] support MAIL FROM parameters and RCPT TO
	parameters.

	* tool/milter-test-client-libmilter.c: show all envelope information.

	* tool/milter-test-server.c, test/tool/test-server.c: move elpased
	time to the top.

	* milter/manager/milter-manager-process-launcher.[ch],
	test/manager/test-process-launcher.c: add
	milter_manager_process_launcher_shutdown().

	* tool/milter-test-server.c, test/tool/test-server.c: normalize
	input recipients.

	* ruby-milter.pc.in, configure.ac, Makefile.am: install ruby-milter.pc.

	* milter/manager/milter-manager-process-launcher.c (setup_child):
	log more progress.

	* milter/manager/milter-manager-main.c,
	milter/manager/milter-manager-process-launcher.c: set event loop.

	* milter/manager/milter-manager-main.c (start_process_launcher_process):
	log pipe FD for process launcher.

	* milter/manager/milter-manager-main.c (start_process_launcher):
	add error check.

2011-01-11  Nobuyoshi Nakada  <nakada@clear-code.com>

	* binding/ruby/src/toolkit/rb-milter-event-loop.c (Init_milter_event_loop):
	add Milter::LibevEventLoop class.

	* binding/ruby/test/milter-event-loop-test-utils.rb
	(MilterEventLoopTestUtils#create_event_loop): switch event loop
	backend by environment variable MILTER_EVENT_LOOP_BACKEND.

2011-01-11  Kouhei Sutou  <kou@clear-code.com>

	* tool/milter-test-server.c, test/tool/test-server.c: show
	also envelope information.

2011-01-11  Nobuyoshi Nakada  <nakada@clear-code.com>

	* milter/client/milter-client.c (get_property): get property using
	property method.

	* milter/manager/milter-manager.c (get_event_loop_backend)
	(set_event_loop_backend): overrode.
	(set_event_loop_backend): ignore private property of MilterClient.

	* milter/client/milter-client.c (event_loop_new): switch event
	loop backend by event_loop_backend property.

2011-01-11  Kouhei Sutou  <kou@clear-code.com>

	* binding/ruby/sample/milter-test-client.rb (Session#abort): show
	readable status.

	* tool/milter-performance-check: work on CentOS 5.

2011-01-11  Nobuyoshi Nakada  <nakada@clear-code.com>

	* milter/core/milter-libev-event-loop.c (constructed): make each
	ev_loop for each MilterLibevEventLoop.

	* milter/core/milter-libev-event-loop.c (remove_callback):
	callback might be removed in callback function, so need to store
	MilterLibevEventLoop and tag previously.

2011-01-11  Kouhei Sutou  <kou@clear-code.com>

	* tool/milter-test-server.c, test/tool/test-server.c,
	test/fixtures/manager/reject-on-envelope-from.txt: use more
	example values for default values.

2011-01-11  Nobuyoshi Nakada  <nakada@clear-code.com>

	* milter/core/milter-libev-event-loop.c (add_callback): set tag in
	the callback header.
	(remove_callback): remove callback from event loop.
	(io_func, child_func, timer_func, idle_func): use remove_callback.

	* configure.ac (rb_errinfo): needs RUBY_LDFLAGS.

	* test/lib/milter-test-utils.c (milter_test_event_loop_new):
	switch event loop backend by environment variable
	MILTER_EVENT_LOOP_BACKEND.

2011-01-10  Kouhei Sutou  <kou@cozmixng.org>

	* tool/milter-performance-check (MilterPerformanceTool#send_mail):
	also handle SystamCallError.

	* tool/milter-report-statistics: support target process filter by
	regexp.

	* milter/client/milter-client.c (milter_client_run_master): master
	process uses default loop context for accept loop.

	* milter/server/milter-server-context.c (connect_watch_func):
	handle error on agent start.

	* milter/server/milter-server-context.c (connect_watch_func):
	dispose connection watch callback before disposing client channel.

	* test/run-test.sh (MILTER_MANAGER_RUBYLIB): remove a garbage at
	the first element.

	* yum/build-in-chroot.sh: support parallel build.

	* yum/gpg-uid.sh: use always 1c837f31 key.

	* ./: 1.6.3 will be released at 2011-01-21.

	* gtk-doc.make: search image files both source and build directory.

	* gtk-doc.make: template files are in build directory not source
	directory.

	* libev-4.01/Makefile.am: don't install libev related files.

	* milter/client/milter-client.c: move milter-client initialize
	codes to ...
	* milter/client/milter-client-init.c: ... here.

	* milter/client.h, milter/client/milter-client-objects.h: move
	MilterClient related declarations to ...
	* milter/client/milter-client.h: ... here.

	* milter/client.h,
	milter/client/milter-client-objects.h,
	milter/client/milter-client.c,
	milter/manager/milter-manager-configuration.[ch],
	test/client/test-client.c, test/manager/test-configuration.c,
	binding/ruby/lib/milter/manager.rb,
	binding/ruby/src/manager/rb-milter-manager-configuration.c,
	binding/ruby/test/manager/test-configuration-loader.rb,
	binding/ruby/test/toolkit/test-client.rb:
	MilterClientEventLoopBackendMode -> MilterClientEventLoopBackend.

2011-01-09  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-configuration.rb,
	binding/ruby/test/manager/test-configuration-loader.rb,
	doc/configuration.rd*: manager.event_loop_backend_mode ->
	manager.event_loop_backend.

	* milter/manager/milter-manager-children.c,
	test/lib/milter-test-client.rb, test/manager/test-children.c:
	support data command emuration for milter protocol version < 4
	SMTP server on all message command (header, end-of-header, body and
	end-of-message).

	* test/lib/milter-test-client.rb: fix a typo.

	* milter/manager/milter-manager-children.c,
	test/manager/test-children.c, test/fixtures/leader/: don't delay
	data event.
	Reported by Kenji Shiono. Thanks!!!

	* test/tool/test-server.c, test/manager/test-children.c,
	test/manager/test-leader.c, test/manager/test-manager.c: use source
	directory instead of base directory for fxiture.

	* test/lib/milter-manager-test-client.c: milter-test-client.rb is
	in source directory.

	* test/lib/milter-test-utils.[ch], test/run-test.sh: support
	source directory using in test.

	* milter/server/milter-server-context.[ch],
	test/server/test-server-context.c: add
	milter_server_context_has_accepted_recipient().

	* test/manager/test-leader.c: call MilterServerContext API with
	blackhole writer instead of set internal state.

	* test/lib/milter-test-client.rb: use an empty flag object instead
	of 0.

	* test/suite-milter-manager-test.c: accept MILTER_LOG_LEVEL
	environment variable for debug.

	* test/fixtures/leader/negotiate.txt: add no-data steps flag
	because no-data-second-client.txt uses no-data flag.

	* 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.fallback_status_at_disconnect
	configuration.

	* milter/manager/milter-manager-leader.c,
	milter/manager/milter-manager-configuration.[ch],
	test/manager/test-configuration.c: use separated fallback status
	when disconnect is detected.

	* test/run-test.sh, Makefile.am, test/Makefile.am: re-support
	in-place build test.

	* 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.fallback_status configuration.

	* binding/ruby/test/run-test.sh: expand default diff target limit.

	* binding/ruby/lib/milter/manager.rb (Milter::ConfigurationDumper#dump):
	use "%#o" instead of "0#o".

2011-01-08  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/lib/milter/manager/netstat-connection-checker.rb:
	disable connection check when MTA doesn't provide SMTP client prot
	address.
	Reported by Kenji Shiono. Thanks!!!

	* binding/ruby/lib/milter/manager/connection-check-context.rb
	(Milter::Manager::ConnectionCheckContext#smtp_server_name): add.

	* binding/ruby/lib/milter/manager/child-context.rb: move
	normalize_macro_name to ...
	* binding/ruby/lib/milter/toolkit.rb
	(Milter::MacroNameNormalizer): ... here.

	* milter/manager/milter-manager-leader.c: fix inverted periodical
	connection check skip condition.

	* milter/manager/milter-manager.c: use
	milter_client_get_process_loop() to get the event loop.

2011-01-07  Nobuyoshi Nakada  <nakada@clear-code.com>

	* doc/configuration.rd (manager.event_loop_backend_mode): documented.

	* binding/ruby/lib/milter/manager.rb
	(Milter::ConfigurationLoader::ManagerConfiguration#event_loop_backend_mode):
	(Milter::ConfigurationLoader::ManagerConfiguration#event_loop_backend_mode=):
	add accessors.

	* configure.ac (GIO_UNIX): use 2.24 or later.

	* autogen.sh: use -d for older sh.

	* configure.ac (ENABLE_GTK_DOC, GTK_DOC_USE_LIBTOOL): set
	AM_CONDITIONAL.

	* binding/ruby/test/toolkit/test-client.rb
	(TestClient#test_event_loop_backend_mode): add test.

	* binding/ruby/src/manager/rb-milter-manager-configuration.c
	(Init_milter_manager_configuration) add EventLoopBackendMode:

	* milter/manager/milter-manager-configuration.c (set_property)
	(get_property): deal with PROP_EVENT_LOOP_BACKEND_MODE.

	* binding/ruby/test/run-test.sh (MILTER_MANAGER_RUBYLIB): do not
	prepend empty path:
	(ruby_glib2_lib_dir): take care of out-of-place build.

	* test/manager/test-manager.c (cut_setup): take care of
	out-of-place build.

	* test/run-test.sh (BUILD_DIR): set build directory.

	* test/lib/milter-test-utils.c (milter_test_get_build_dir): get
	build directory.

	* milter/manager/milter-manager-configuration.c:
	(milter_manager_configuration_get_event_loop_backend_mode)
	(milter_manager_configuration_set_event_loop_backend_mode): add
	accessors.

	* milter/client/milter-client-objects.h (MilterClientEventLoopBackendMode):
	* milter/manager/milter-manager-configuration.c: removed LAST.

	* milter/client/milter-client-objects.h (MilterClientEventLoopBackendMode):
	renamed MAX as LAST in GLib way.

	* milter/manager/milter-manager-configuration.c: ditto.

2011-01-06  Nobuyoshi Nakada  <nakada@clear-code.com>

	* milter/core/milter-libev-event-loop.c (callback_header): ensure
	alignment.  more alignment.

	* milter/client.h (MilterClientClass):
	add {get,set}_event_loop_backend_mode.

	* milter/manager/milter-manager-configuration.c (MilterManagerConfigurationPrivate):
	add event_loop_backend_mode property.

	* milter/client/milter-client-objects.h (MilterClientEventLoopBackendMode):
	event loop backend mode.
	* milter/client/milter-client.c: and its accessor functions.
	(_milter_client_class_init, set_property, get_property): and property.

	* configure.ac: fix typo.
	inverted condition to compare with no.

	* milter/core/Makefile.am (libmilter_core_la_CFLAGS): add
	LIBEV_CFLAGS if using libev.

	* configure.ac: use bundled libev if 4.01 or later is not found.

	* libev-4.01/Makefile.am (libev.la): no install shared library.

	* libev-4.01: imported.

2011-01-06  Kouhei Sutou  <kou@cozmixng.org>

	* milter/client/milter-client.c: report error in deprecated
	milter_client_main().

2011-01-05  Kouhei Sutou  <kou@cozmixng.org>

	* milter/core/milter-libev-event-loop.c: use GUINT_TO_POINTER(),
	g_direct_hash() and g_direct_equal().

	* milter/core/milter-libev-event-loop.c: use more meaningful name.

	* milter/core/milter-libev-event-loop.c (CallbackFunc): define.

	* configure.ac, milter/core/milter-libev-event-loop.[ch]:
	libevent -> libev.

2011-01-05  Kouhei Sutou  <kou@clear-code.com>

	* tool/milter-report-statistics: use top instead of ps for
	retrieving %CPU.

	* tool/milter-report-statistics: show more statistics.

	* tool/milter-report-statistics: add.

2011-01-05  Nobuyoshi Nakada  <nakada@clear-code.com>

	* milter/core/milter-libevent-event-loop.c (add_timeout_full):
	start the timer.
	(add_idle_full): add.
	(constructed): remove libevent only stuff.
	(io_func): renamed.
	(watch_child_full): add.
	(MilterLibeventEventLoopPrivate): manage callbacks.
	(remove): add.

	* configure.ac: check libev before libevent.
	abandon libevent.

	* test/lib/milter-test-utils.c (milter_test_get_tmp_dir): return
	temporary directory name.

	* test/client/test-client.c (cut_setup): use temporary directory.

	* test/client/test-client.c (cut_setup): add reference to loop.

	* milter/core/milter-libevent-event-loop.{c,h}: event loop using
	libevent.  (still in progress)

	* configure.ac (RD2RUBY), doc/Makefile.am (.rd.man, .rd.jman):
	use associated version ruby.

	* tool/Makefile.am (milter_test_client_libmilter_LDADD): needs
	libmilter-core.la.

2011-01-04  Kouhei Sutou  <kou@cozmixng.org>

	* po/POTFILES.skip: add for gio-unix-compatible.

	* milter/core/milter-event-loop.c: add NULL check.

	* binding/ruby/test/toolkit/test-server-context.rb: set event loop.

	* binding/ruby/test/toolkit/test-client-context.rb: set event loop.

	* milter/core/milter-agent.c: make event-loop writable.

	* binding/ruby/test/run-test.sh: use command line option isntead
	of environment varialbe.

	* binding/ruby/test/run-test.sh: fix a typo.

	* milter/client/milter-client.c: use meaningful name.

	* milter/client/milter-client.c: cleanup error handling.

	* milter/client.h, milter/client/milter-client.c:
	milter_client_run() family returns GError on error.
	* milter/manager/milter-manager-main.c,
	libmilter/libmilter-compatible.c,
	binding/ruby/src/toolkit/rb-milter-client.c,
	test/client/test-client.c,
	tool/milter-test-client.c: follow the above changes.

	* libmilter/libmilter-compatible.c: use milter_client_run().

	* milter/client/milter-client.c (milter_client_run_worker):
	returns gboolean.

	* milter/client.h, milter/client/milter-client.c: mark
	milter_client_main() deprecated. use milter_client_run() instead.
	* binding/ruby/src/toolkit/rb-milter-client.c,
	binding/ruby/lib/milter/client/command-line.rb,
	libmilter/libmilter-compatible.c,
	milter/manager/milter-manager-main.c,
	test/client/test-client.c,
	tool/milter-test-client.c: follow the above changes.

	* configure.ac: add dummy uninstall target to bundled Ruby/GLib2.

	* milter/manager/milter-manager-children.c: use MilterEventLoop.

	* milter/manager/milter-manager.c: use MilterEventLoop.

	* milter/manager/milter-manager-process-launcher.c: use MilterEventLoop.

	* milter/manager/milter-manager-controller.c: use MilterEventLoop.

	* milter/manager/milter-manager-children.c: use MilterEventLoop.

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

	* milter/client/milter-client.c: use MilterEventLoop.

	* test/client/test-client-context-data.c: use MilterEventLoop.

	* milter/core/milter-utils.[ch] (milter_utils_timeout_add): remove.

	* milter/client/milter-client-context.c: use MilterEventLoop.

	* milter/manager/milter-manager.c: use MilterEventLoop.

	* milter/manager/milter-manager-children.c: use MilterEventLoop.

	* milter/manager/milter-manager-controller.[ch]: use MilterEventLoop.
	* milter/manager/milter-manager-main.c,
	test/manager/test-controller.c: follow the above change.

	* test/lib/milter-test-client.c,
	test/lib/milter-test-server.c,
	test/lib/milter-test-utils.[ch]: use MilterEventLoop.

	* test/lib/milter-test-client.[ch],
	test/lib/milter-test-server.[ch],
	test/lib/milter-test-utils.[ch],
	test/client/test-client.c,
	test/server/test-server-context.c,
	test/tool/test-server.c: use MilterEventLoop.

	* test/manager/test-children.c (test_no_negotiation): use
	MilterEventLoop.

	* test/core/test-logger.c (test_console_output): remove needless code.

	* test/lib/milter-test-utils.[ch] (milter_test_pump_all_events),
	test/manager/test-controller-context.c,
	test/manager/test-process-launcher.c: use MilterEventLoop.

	* test/server/test-server-context-signals.c: use MilterEventLoop.

	* test/libmilter/test-libmilter-compatible.c: use MilterEventLoop.

	* test/libmilter/test-libmilter-compatible.c (test_stop): remove
	needless milter_init() call.

	* test/client/test-client.c: use MilterEventLoop.

	* milter/client.h, milter/client/milter-client.c
	(milter_client_get_process_loop): export event loop for processing
	milter protocol.

	* test/server/test-server-context.c: use MilterEventLoop.

	* test/manager/test-manager.c: use MilterEventLoop.

	* test/manager/test-children.c: use MilterEventLoop.

	* test/lib/milter-manager-test-client.[ch],
	test/lib/milter-manager-test-scenario.[ch],
	test/manager/test-children.c, test/manager/test-leader.c,
	test/manager/test-manager.c: use MilterEventLoop.

	* test/lib/milter-manager-test-utils.[ch],
	test/manager/test-leader.c: use MilterEventLoop.

	* test/tool/test-server.c: use MilterEventLoop.

	* test/client/Makefile.am: format.

	* test/client/test-client-context-header.c: remove.
	* test/client/test-client-context-modify.c: moved from all tests
	from test-client-context-header.c.

	* milter/client/milter-client-context.c: fix error message.

	* test/client/test-client-context-header.c: move delete header
	test to ...
	* test/client/test-client-context-modify.c: ... here.

	* test/manager/test-children.c: add missing NULLs.

	* test/tool/test-server.c: add cut_ prefix.

	* test/tool/test-server.c: specify server name.

	* test/client/test-client-context-reply.c: use MilterEventLoop.

	* test/client/test-client-context-header.c: use MilterEventLoop.

	* test/client/test-client-context-modify.c: use MilterEventLoop.

	* test/client/test-client-context-callback.c: use MilterEventLoop.

	* doc/milter-test-server.rd*, tool/milter-test-server.c: make
	milter-test-server name customizable. (add --name option.)

	* test/client/test-client-context-body.c: use MilterEventLoop.

	* tool/milter-test-server.c: use MilterEventLoop.

	* test/client/test-client-context-address.c: use MilterEventLoop.

	* test/libmilter/test-smfi-context.c: use MilterEventLoop.

	* test/core/test-writer.c: use MilterEventLoop.

	* test/core/test-reader.c: use MilterEventLoop.

	* milter/manager/milter-manager-children.c,
	test/manager/test-children.c: use MilterEventLoop.

	* milter/manager/milter-manager-leader.c,
	test/manager/test-leader.c: use MilterEventLoop.

	* milter/server/milter-server-context.c,
	test/server/test-server-context.c: use MilterEventLoop.

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

	* test/manager/test-controller-context.c: use MilterEventLoop.

	* milter/manager/milter-manager-process-launcher.c,
	test/manager/test-process-launcher.c: use MilterEventLoop.

	* milter/core/milter-event-loop.[ch],
	milter/core/milter-glib-event-loop.c
	(milter_event_loop_watch_child, milter_event_loop_watch_child_full): add.

	* milter/core/milter-event-loop.[ch],
	milter/core/milter-glib-event-loop.c: add_watch -> watch_io.
	* milter/core/milter-reader.c, milter/core/milter-writer.c,
	milter/client/milter-client.c: follow the above change.

	* milter/core/milter-event-loop.[ch],
	milter/core/milter-glib-event-loop.c
	(milter_event_loop_add_idle)
	(milter_event_loop_add_timeout_full): add.

	* test/server/test-server-context-signals.c: use MilterEventLoop.

	* milter/manager/milter-manager-children.[ch]: require event loop.

	* milter/manager/milter-manager-leader.c, test/manager/,
	binding/ruby/src/manager/rb-milter-manager-children.c,
	binding/ruby/test/manager/test-child-context.rb,
	binding/ruby/test/manager/test-configuration.rb: follow the above
	change.

	* binding/ruby/test/run-test.sh: support 'make check'.
	* binding/ruby/test/run-test.rb: remove needless load path
	configurations.

	* gio-unix-compatible/gio/Makefile.am
	(libgio_unix_compatible_la_LIBADD): remove needless prefix.

	* configure.ac: add dummy distclean target to bundled Ruby/GLib2.

	* binding/ruby/test/run-test.sh,
	Makefile.am,
	binding/ruby/Makefile.am,
	binding/ruby/test/Makefile.am: add a test runner for Ruby bindings tests.

	* test/run-test.sh: cleanup.

	* binding/ruby/src/toolkit/rb-milter-event-loop.c,
	binding/ruby/src/toolkit/rb-milter-core.c,
	binding/ruby/src/toolkit/rb-milter-core-private.h,
	binding/ruby/src/toolkit/Makefile.am: bind MilterEventLoop.

	* milter/client/milter-client.c: multi threads -> multi thread.

	* milter/client/milter-client.c: use MilterEventLoop on single
	thread mode.

	* milter/core/milter-glib-event-loop.c: remove needless flag.

	* milter/client/milter-client.c: use MilterEventLoop.

	* milter/client/milter-client.c: use correct names.

	* milter/core/milter-agent.[ch],
	milter/client/milter-client.c,
	test/server/test-server-context-command.c: milter_agent_start()
	use internal event loop instead of being passed passed event loop.

	* milter/core/milter-agent.[ch]: add EventLoop to agent.

	* milter/core/milter-event-loop.h: remove needless code.

	* test/server/test-server-context.c: use milter_event_loop_iterate().

	* milter/core/milter-event-loop.[ch],
	milter/core/milter-glib-event-loop.[ch]: remove_source -> remove.

	* milter/core/milter-reader.c, milter/core/milter-writer.c: follow
	the above changes.

	* milter/core/milter-event-loop.[ch],
	milter/core/milter-glib-event-loop.c (milter_event_loop_iterate): add.

	* milter/core/milter-reader.c, milter/core/milter-writer.c: add
	missing loop reference.

	* test/server/test-server-context-command.c: pass missing event loop.

	* test/server/test-server-context-command.c: remove unused codes.

	* milter/core/milter-agent.[ch]: 'eventloop' -> 'loop'.

	* milter/core/milter-glib-event-loop.c: support loop context.

	* milter/core/milter-event-loop.[ch]: use more meaningful name.

	* milter/core/milter-reader.[ch], milter/core/milter-writer.[ch]:
	"eventloop" -> "loop".

	* milter/core/milter-event-loop.[ch]: move new-context related
	features to ...
	* milter/core/milter-glib-event-loop.[ch]: ... here.

	* milter/client/milter-client.c, milter/core.h,
	milter/manager/milter-manager-process-launcher.c: follow the above
	chagnes.

	* milter/core/milter-event-loop.c: format.

	* milter/core/milter-glib-event-loop.[ch],
	milter/core/milter-event-loop.c: remove needless '_loop'.

	* milter/core/milter-glib-event-loop.c: eventloop -> loop.

	* milter/core/milter-g-event-loop.[ch]: rename to ...
	* milter/core/milter-glib-event-loop.[ch]: ... them.

	* milter/core/Makfile.am, milter/core/milter-event-loop.c: follow
	the above changes.

	* milter/core/milter-event-loop.c: remove garbages.

	* configure.ac: show event.h check result.

	* configure.ac: also --with-libevent guesses libevent prefix.

	* configure.ac: also check event.h.

2011-01-02  Kouhei Sutou  <kou@cozmixng.org>

	* milter/core/milter-event-loop.[ch]: cleanup.

	* milter/client/Makefile.am (INCLUDES): add bundled GIO's include
	path to INCLUDES instead of AM_CFLAGS to use it not the system GIO.

	* configure.ac: add --with-libevent configure option.

2010-12-29  Nobuyoshi Nakada  <nakada@clear-code.com>

	* milter/core/milter-agent.c (milter_agent_start),
	milter/core/milter-writer.c (milter_writer_start),
	milter/core/milter-reader.c (milter_reader_private)
	milter/client/milter-client.c (MilterClientPrivate): use
	MilterEventLoop in place of GMainContext.

	* milter/core/milter-event-loop.c (constructed): call initialize
	with new_context flag.

	* milter/manager/milter-manager-process-launcher.c
	(milter_manager_process_launcher_init): use default context.

	* milter/core/milter-event-loop.c (MilterEventLoop): add
	new-context constructor property.
	(milter_event_loop_new): moved from milter-g-event-loop.c.

	* milter/core/milter-g-event-loop.c (remove_source): implemented.

	* milter/core/milter-event-loop.c (milter_event_loop_remove_source):
	new method.

	* milter/manager/milter-manager-process-launcher.c
	(MilterManagerProcessLauncherPrivate): replace main_loop with
	MilterEventLoop.

	* milter/core/milter-g-event-loop.c (milter_event_loop_new):
	implemented here for the time being.

	* milter/core/milter-event-loop.h (milter_event_loop_new): add.

	* milter/core/milter-g-event-loop.c (quit_loop): implemented.

	* milter/core/milter-event-loop.c (milter_event_loop_quit): new
	method.

	* milter/core/milter-g-event-loop.c (run_loop): implemented.
	(dispose): dispose loop instance.

	* milter/core/milter-event-loop.c (milter_event_loop_run): new
	method.

	* milter/core/milter-g-event-loop.c (add_idle_full): implemented.

	* milter/core/milter-event-loop.c (milter_event_loop_add_idle_full):
	new method.

2010-12-28  Nobuyoshi Nakada  <nakada@clear-code.com>

	* milter/core/milter-event-loop.c (milter_event_loop_add_timeout):
	add.

	* milter/core/milter-event-loop.c (milter_event_add_watch): add.
	(milter_event_loop_add_watch): fixed typo.

	* milter/core/milter-g-event-loop.c: subclass of MilterEventLoop
	for GLib.

	* milter/core/milter-event-loop.h (MilterEventLoopClass): add
	add_watch method.

	* milter/core/milter-event-loop.h (MILTER_IS_EVENT_LOOP)
	(MILTER_IS_EVENT_LOOP_CLASS): missed to rename.

	* milter/core/milter-event-loop.c, milter/core/milter-event-loop.h:
	rename macros.

	* milter/core/milter-event-loop.c, milter/core/milter-event-loop.h:
	insert hyphen between event and loop.

	* milter/core/milter-eventloop.c, milter/core/milter-eventloop.h:
	add empty class.

	* configure.ac: check for libevent.

2010-12-27  Kouhei Sutou  <kou@cozmixng.org>

	* tool/milter-performance-check: use meaningful name:
	'f' -> 'input'/'output'.

	* tool/milter-performance-check: use each instead of map.

	* tool/milter-performance-check: use more meaningful name:
	'f' -> 'worker'.

	* tool/milter-performance-check: use Fixnum#times instead of Range#each.

	* tool/milter-performance-check: make internal methods private.

	* tool/milter-performance-check: use more meaningful name: add '_worker'.

	* tool/milter-performance-check: use meaningful name
	--mail-size -> --n-additional-lines.

2010-12-27  Nobuyoshi Nakada  <nakada@clear-code.com>

	* tool/milter-performance-check (MilterPerformanceTool#parse_options)
	(MilterPerformanceTool#run, MilterPerformanceTool#run_multi): add
	--n-workers option.

	* tool/milter-performance-check (MilterPerformanceTool#parse_options)
	(MilterPerformanceTool#generate_mail_source): add --mail-size option.

2010-12-24  Nobuyoshi Nakada  <nakada@clear-code.com>

	* milter/client/milter-client.c (unix_socket_from_fd),
	binding/ruby/lib/milter/client/command-line.rb
	(Milter::Client::CommandLine#run_worker): control socket should be
	dgram to make address data not to be split.

	* configure.ac (GIO_UNIX): no longer bothered by the bugs of
	g_socket_details_from_fd and g_unix_fd_message_append_fd.

	* milter/client/milter-client.c (master_accept_connection)
	(worker_accept_thread): use GSocket directly to pass socket
	address too.  getpeername() often fails because of insufficient
	resources and others.

2010-12-22  Nobuyoshi Nakada  <nakada@clear-code.com>

	* milter/client/milter-client.c (worker_accept_thread): no
	shutdown here.
	(worker_accept_thread): should not emit errors from sub thread.

	* binding/ruby/src/toolkit/rb-milter-client.c (rb_io_t): is 1.8.7
	or later.

	* configure.ac: Shellwords.split is 1.8.7 or later.

	* binding/ruby/lib/milter/client/command-line.rb
	(Milter::Client::CommandLine#run_worker): split from run.

	* milter/client/milter-client.c (worker_accept_thread)
	(milter_client_run_worker): receive fd from the master process in
	a separated thread.

2010-12-21  Kouhei Sutou  <kou@clear-code.com>

	* module/configuration/ruby/milter-manager-ruby-configuration.c:
	remove PACKAGE_* macros defined in Ruby.

2010-12-21  Haruka Yoshihara  <yoshihara@clear-code.com>

	* test/lib/milter-manager-test-client.c (milter_manager_test_client_set_arguments): added ruby_path in test-client command.

	* test/run-test.sh: used Ruby1.9.1 for run-test.sh.

	* binding/ruby/test/manager/test-postfix-regexp-table.rb (TestPostfixRegexpTable#test_invalid_pattern): changed message of Regexp for IGNORECASE.

	* binding/ruby/test/manager/test-postfix-{cidr/regexp}-table.rb:
	  changed StringIO.new to create_input.
	  created milter-parse-test-utils.rb for create_input.

	* module/configuration/ruby/milter-manager-ruby-configuration.c:
	added config.h include.
	(rb_funcall_protect): used RARRAY_LEN/PTR instead RARRY->LEN/PTR for Ruby 1.9.

	* configure.ac: used AC_CHECK_FUNCS for rb_errinfo.

2010-12-21  Nobuyoshi Nakada  <nakada@clear-code.com>

	* configure.ac: use script in the source directory.

	* binding/ruby/lib/milter/client/command-line.rb (Milter::Client::CommandLine#run):
	ignore signals in child processes, while deliver to children in
	parent process.

	* milter/client/milter-client.c: renamed multi_workers and
	single_worker as multi_threads and single_thread respectively.
	renamed parent and child workers as master and workers.

	* milter/client/milter-client.c (single_worker_client_channel_setup)
	(milter_client_run_worker, milter_client_run_master): run in
	single thread.
	(milter_client_run_worker): run main loop.
	(milter_client_run_master): use private main loop using default
	main context.

	* milter/client/Makefile.am (AM_CFLAGS): refer top_srcdir.

2010-12-21  Kouhei Sutou  <kou@clear-code.com>

	* gio-unix-compatible/gio/gunixfdmessage.c
	(g_unix_fd_message_append_fd):
	fix "Bug 637696 - g_unix_connection_send_fd() doesn't work".
	https://bugzilla.gnome.org/show_bug.cgi?id=637696

	* Makefile.am, configure.ac, milter/client/Makefile.am,
	gio-unix-compatible/: import GIO UNIX.

2010-12-21  Nobuyoshi Nakada  <nakada@clear-code.com>

	* binding/ruby/lib/milter/client/command-line.rb
	(Milter::Client::CommandLine#run): add --multi-process-mode
	option.
	(Milter::Client::CommandLine#run): detach child processes.
	(Milter::Client::CommandLine#setup_milter_options): renamed as
	--number-of-processes.
	(Milter::Client::CommandLine#setup_milter_options): check the
	argument.
	(Milter::Client::CommandLine#setup_milter_options): renamed as
	--n-workers.

2010-12-21  Kouhei Sutou  <kou@clear-code.com>

	* milter/core/milter-version.h.in,
	module/configuration/ruby/milter-manager-ruby-configuration.c:
	"this program" -> "this library".

	* configure.ac: "nil" -> "" for Ruby 1.8.7.

2010-12-21  Nobuyoshi Nakada  <nakada@clear-code.com>

	* configure.ac: fixed typo, and use empty string in place of nil.

2010-12-20  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/src/toolkit/rb-milter-client.c: remove needless
	fd_passing_io=. It's automatically generated.

	* binding/ruby/src/toolkit/rb-milter-client.c: indent nested #ifdef.

2010-12-20  Nobuyoshi Nakada  <nakada@clear-code.com>

	* milter/client/milter-client.c (parent_worker_accept_connection):
	  workaround for a bug g_unix_connection_send_fd fails wrongly.

	* binding/ruby/lib/milter/client/command-line.rb
	(Milter::Client::CommandLine#setup_milter_options):

	* binding/ruby/src/toolkit/rb-milter-client.c (client_set_fd_passing_io):
	add setter method.

	* binding/ruby/test/run-test.rb: separate build directory from
	source directory.

	* milter/client/milter-client.c (MilterClientPrivate):
	children.number is not used.  MilterClient does not take care of
	child processes.

	* binding/ruby/src/toolkit/rb-milter-client.c
	(client_run_master, client_run_worker): add wrapper methods.

	* milter/client/milter-client.c (milter_client_run_master)
	(milter_client_run_worker): renamed.

	* milter/client/milter-client.c (milter_client_set_fd_passing_fd):
	should be signed int.

	* milter/client/milter-client.c (milter_client_master_main)
	(milter_client_worker_main): add new main loop for multi process
	mode.

	* milter/client/milter-client.c (milter_client_set_fd_passing_fd):
	add new setter.

	* milter/client/milter-client.c (parent_worker_accept_connection):
	initialize a local variable.

	* milter/client.h (milter_client_send_io, milter_client_recv_io):
	removed stale declarations.

	* milter/client/milter-client.c (_milter_client_init, dispose):
	initialize and dispose control connection.

	* configure.ac (rbconfig): remove quotes.

2010-12-17  Kouhei Sutou  <kou@clear-code.com>

	* module/configuration/ruby/milter-manager-ruby-configuration.c:
	don't call clear on dispose.

2010-12-17  Nobuyoshi Nakada  <nakada@clear-code.com>

	* milter/client/milter-client.c (MilterClientPrivate): add
	fields for multi-process mode

	* configure.ac: use RbConfig instead of obsolete Config.

2010-12-17  Kouhei Sutou  <kou@clear-code.com>

	* configure.ac: prior bundled Ruby/GLib2.

2010-12-17  Nobuyoshi Nakada  <nakada@clear-code.com>

	* configure.ac: check gio-unix separately.

	* configure.ac: needs gio-unix for GUnixConnection.

2010-12-17  Kouhei Sutou  <kou@clear-code.com>

	* test/run-test.sh: support bundled Ruby/GLib2 0.90.5.

	* milter/client/milter-client.c (accept_connection_fd): return
	client FD instead of returning via return address.

	* milter/client/milter-client.c (accept_connection_fd): remove
	a needless variable.

2010-12-17  Nobuyoshi Nakada  <nakada@clear-code.com>

	* milter/client/milter-client.c (accept_connection_fd): split from
	accept_connection.

	* milter/client/milter-client.c (milter_client_send_io)
	(milter_client_recv_io): removed.  use GUnixConnection instead.

2010-12-16  Nobuyoshi Nakada  <nakada@clear-code.com>

	* binding/ruby/test/run-test.rb: need ruby-glib2.

	* binding/ruby/test/run-test.rb: use build directories, not source
	directories.

	* tool/Makefile.am (milter_test_{client,libmilter,server}_LDADD):
	need gobject and glib.

	* binding/ruby/src/toolkit/rb-milter-client.c (rb_cMilterClient):
	define variable.

	* binding/ruby/src/toolkit/rb-milter-server.c (rb_mMilterServer):
	ditto.

	* binding/ruby/src/toolkit/rb-milter-socket-address.c (rb_cMilterSocketAddressIPv4)
	(rb_cMilterSocketAddressIPv6, rb_cMilterSocketAddressUnix)
	(rb_cMilterSocketAddressUnknown): ditto.

	* binding/ruby/src/toolkit/rb-milter.c (rb_mMilter)
	(rb_eMilterError): ditto.

	* milter/client/milter-client.c (milter_client_send_io)
	(milter_client_recv_io): functions to pass fd.

	* configure.ac: checks for send/receive IO descriptor.

	* configure.ac: use positive test condition.

	* binding/ruby/src/toolkit/rb-milter.h: use extern linkage to get
	rid of duplicate symbols.

	* configure.ac (RC_ARCHS): ignore other archs than currently
	running on, since libtool does not deal with multiple -arch
	options.

	* configure.ac: vendorarchdir is not defined in older ruby.

	* binding/ruby/glib-0.90.5/lib/pkg-config.rb: import from
	pkg-config 1.0.8.

2010-12-14  Haruka Yoshihara  <yoshihara@clear-code.com>

	* configure.ac: fix include path for Ruby/GLib2 0.90.05.

2010-12-14  Kouhei Sutou  <kou@clear-code.com>

	* configure.ac: fix include path for Ruby 1.9.

2010-12-14  Haruka Yoshihara  <yoshihara@clear-code.com>

	* binding/ruby/Makefile.am: listed test-unit-files for Ruby/GLib2 0.90.5.

2010-12-14  Kouhei Sutou  <kou@clear-code.com>

	* configure.ac: use more strict include path order.

	* configure.ac: update Ruby/GLib2 version: 0.19.4 -> 0.90.5.

2010-12-14  Haruka Yoshihara  <yoshihara@clear-code.com>

	* binding/ruby/glib-0.90.5: deleted no-used file.

	* binding/ruby: upgrade ruby/glib2 0.19.4 to 0.90.5.

	* configure.ac: fix a typo($rbconfig_arch).

2010-12-13  Kouhei Sutou  <kou@clear-code.com>

	* binding/ruby/sample/milter-test-client.rb (Session#abort): show
	state on abort.

	* binding/ruby/sample/milter-test-client.rb (Session#abort): add
	missing state argument.

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

	* configure.ac: work again with Ruby 1.8.

2010-12-07  Haruka Yoshihara  <yoshihara@clear-code.com>

	* configure.ac: add ruby1.9-header path.

2010-12-01  Kouhei Sutou  <kou@clear-code.com>

	* apt/update-repository.sh: fix wrong Ubuntu component name.

2010-12-01  Yuto HAYAMIZU  <y.hayamizu@gmail.com>

	* tool/milter-performance-check (MilterPerformanceTool#update_statistics): specify fractional_seconds of Time#iso8601

2010-11-30  Yuto HAYAMIZU  <y.hayamizu@gmail.com>

	* tool/milter-performance-check: add flood-mode and performance report of each mail.

2010-11-24  Kouhei Sutou  <kou@cozmixng.org>

	* yum/build-repository-rpm.sh: re-support stable/development.

2010-11-23  Kouhei Sutou  <kou@cozmixng.org>

	* html/index.html*: use stable page link for available milters.

	* configure.ac: 1.6.2 -> 1.6.3.

	* doc/install-to-ubuntu.rd*, doc/install-to-debian.rd*: use stable
	list again.

	* apt/build-in-chroot.sh: support Debian code names.

	* yum/milter-manager.repo: remove because it's generated automatically.

	* NEWS*: add 1.6.2 entry.

	* debian/: add milter-manager-doc package.

	* debian/rules, debian/README.Debian: remove needless README.Debian.

	* debian/changelog: remove invalid mnu.

	* debian/control: use correct section.

	* apt/build-in-chroot.sh: remove .svn/ in debian/.

	* yum/build-rpm.sh: update.

	* debian/changelog: fix package name.

	* Makefile.am: parameterize package name.

	* */: update release version.

	* doc/install-to-*: update package URLs.

2010-11-22  Kouhei Sutou  <kou@cozmixng.org>

	* yum/milter-manager-depended-packages: add.

	* milter-manager.spec.in: move to ...
	* rpm/centos/milter-manager.spec.in: ... here.

	* apt/Makefile.am: ensure creating distribution directory.

	* Makefile.am (ACLOCAL_AMFLAGS): use the same value with autogen.sh.

	* Makefile.am (update-latest-release): also update debian/changelog.

	* apt/, debian/, yum/: add.

	* binding/ruby/lib/milter/client.rb: check method responsibility.

	* binding/ruby/src/toolkit/rb-milter-client-context.c,
	binding/ruby/test/toolkit/test-client-context.rb: bind replace_body.

	* milter/client/milter-client-context.[ch]
	(milter_client_context_replace_body): add error check.

	* libmilter/libmilter-compatible.c,
	binding/ruby/src/toolkit/rb-milter-client-context.c,
	milter/manager/milter-manager-leader.c,
	test/client/test-client-context-body.c: follow the above change.

	* milter/client/milter-client-context.[ch]
	(milter_client_context_delete_recipient): add error check.

	* libmilter/libmilter-compatible.c,
	binding/ruby/src/toolkit/rb-milter-client-context.c,
	milter/manager/milter-manager-leader.c,
	test/client/test-client-context-address.c,
	test/fixtures/leader/: follow the above change.

	* milter/client/milter-client-context.[ch]
	(milter_client_context_add_recipient): add error check.

	* libmilter/libmilter-compatible.c,
	binding/ruby/src/toolkit/rb-milter-client-context.c,
	milter/manager/milter-manager-leader.c,
	test/client/test-client-context-address.c,
	test/fixtures/leader/: follow the above change.

	* milter/manager/milter-manager-children.c: ensure closing opened
	temporary file for large body message.
	Reported by Kenji Shiono. Thanks!!!

	* tool/milter-test-server.c: break body down to as large as chunks.

	* tool/milter-test-server.c: add missing spaces.

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

	* milter/manager/milter-manager-configuration.c: use gint64 for
	time_t not gssize.
	Suggested by OBATA Akio. Thanks!!!

	* text/fixtures/leader/: follow the change_from change.

	* milter/client/milter-client-context.[ch],
	milter/manager/milter-manager-leader.c,
	test/client/test-client-context-address.c,
	libmilter/libmilter-compatible.c,
	binding/ruby/src/toolkit/rb-milter-client-context.c:
	milter_client_context_change_from() supports GError.

2010-11-09  Kouhei Sutou  <kou@cozmixng.org>

	* milter/client/milter-client-context.[ch],
	milter/manager/milter-manager-leader.c,
	test/client/test-client-context-header.c:
	milter_client_context_delete_header() supports GError.

	* binding/ruby/src/toolkit/rb-milter-client-context.c,
	binding/ruby/test/toolkit/test-client-context.rb: bind
	Milter::ClientContext#delete_header.

	* binding/ruby/src/toolkit/rb-milter-client-context.c,
	binding/ruby/test/toolkit/test-client-context.rb: bind
	Milter::ClientContext#change_header.

	binding/ruby/test/toolkit/test-client-context.rb: bind
	Milter::ClientContext#insert_header.

	* binding/ruby/src/toolkit/rb-milter-client-context.c,
	binding/ruby/test/toolkit/test-client-context.rb: bind
	Milter::ClientContext#change_from.

	* binding/ruby/test/toolkit/test-client-context.rb: add tests for
	Milter::ClientContext#add_recipient and #delete_recipient.

2010-11-09  Kouhei Sutou  <kou@clear-code.com>

	* binding/ruby/src/toolkit/rb-milter-client-context.c:
	bind Milter::ClientContext#add_recipient and #delete_recipient.

2010-10-14  Kouhei Sutou  <kou@cozmixng.org>

	* doc/install-options-to-centos.rd*: Use sqlite3-ruby 1.2.1 on
	CentOS.
	Reported by Kenji Shiono. Thanks!!!

2010-09-28  Kouhei Sutou  <kou@clear-code.com>

	* module/configuration/ruby/milter-manager-ruby-configuration.c
	(rb_funcall_protect): fix a memory leak.

2010-09-21  Kouhei Sutou  <kou@cozmixng.org>

	* data/init.d/debian/milter-manager: ensure changing PID file
	directory owner and group.
	Reported by Kenji Shiono. Thanks!!!

	* data/init.d/debian/milter-manager: ensure creating PID file
	directory.
	Reported by Kenji Shiono. Thanks!!!

2010-09-18  Kouhei Sutou  <kou@clear-code.com>

	* milter/client/milter-client-context.[ch]
	(milter_client_context_change_header): support GError.

	* binding/ruby/src/toolkit/rb-milter-client-context.c,
	libmilter/libmilter-compatible.c,
	milter/manager/milter-manager-leader.c,
	test/: follow the above changes.

	* binding/ruby/src/toolkit/rb-milter-client-context.c,
	binding/ruby/lib/milter/client.rb: bind change header.
	TODO: milter_client_context_change_header() should support GError.

	* binding/ruby/lib/milter/client.rb: Add add_header for
	convenience.

	* binding/ruby/lib/milter/client.rb: improve error check for
	qurantine.

	* binding/ruby/src/toolkit/rb-milter-client-context.c,
	binding/ruby/lib/milter/client.rb: bind quarantine.

	* binding/ruby/lib/milter/client.rb: add convenience continue and
	progress methods to set response status.

	* binding/ruby/lib/milter/client.rb,
	binding/ruby/lib/milter/manager/child-context.rb,
	binding/ruby/lib/milter/toolkit.rb: share convenience macro
	predicates.

2010-09-18  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/lib/milter/client.rb: reset status in each response.

	* test/core/test-logger.c: fix a typo.

2010-09-15  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/sample/milter-tarpit.rb: don't use internal main
	loop. use async API instead.
	Reported by Kenji Shiono. Thanks!!!

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

	* binding/ruby/lib/milter/client/command-line.rb: fix typos.
	Reported by Kenji Shiono. Thanks!!!

2010-09-14  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/sample/milter-tarpit.rb: add a sample tarpitting milter.

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

	* doc/*-freebsd.rd*: 1.5.3 -> 1.6.1.

2010-08-20  Kouhei Sutou  <kou@cozmixng.org>

	* configure.ac: 1.6.1 -> 1.6.2.

	* NEWS*: add 1.6.1 entry.

	* /: 1.6.0 -> 1.6.1.

2010-08-19  Kouhei Sutou  <kou@cozmixng.org>

	* README*: add akira yamada to thanks list. Thanks!!!

	* milter/core/milter-logger.[ch],
	milter/core/milter-syslog-logger.c,
	test/core/test-logger.c, test/core/test-syslog-logger.c: fix
	statistics log ins't sysloged bug.
	Reported by akira yamada. Thanks!!!

	* milter/core/milter-logger.h (milter_log): use milter_need_log().

2010-08-11  Kouhei Sutou  <kou@clear-code.com>

	* configure.ac: 1.6.0 -> 1.6.1.

	* /: 1.4.2 -> 1.6.0.

	* NEWS*: add 1.6.0 entry.

2010-08-10  Nobuyoshi Nakada  <nobu@elm.clear-code.com>

	* test/manager/Makefile.am (INCLUDES): needs
	test/lib/milter-test-enum-types.h under builddir.

2010-08-09  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/lib/milter/manager/postfix-regexp-table.rb,
	binding/ruby/lib/milter/manager/postfix-cidr-table.rb,
	binding/ruby/lib/milter/manager/postfix-condition-table-parser.rb,
	binding/ruby/test/manager/test-postfix-regexp-table.rb: fix
	reported error line number.

	* binding/ruby/lib/milter/manager/postfix-regexp-table.rb,
	binding/ruby/test/manager/test-postfix-regexp-table.rb: support
	variable expansion.

2010-08-08  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/lib/milter/manager/postfix-regexp.rb,
	binding/ruby/test/test-postfix-regexp.rb: add partial Postfix
	regexp_table(5) support.

	* binding/ruby/test/milter-test-utils.rb,
	binding/ruby/test/run-test.rb: suppress log.

	* binding/ruby/lib/milter/manager/,
	binding/ruby/test/manager/: CIDRTable -> PostfixCIDRTable.

	* binding/ruby/lib/milter/manager/condition-table.rb,
	binding/ruby/lib/milter/manager/postfix-condition-table-parser.rb: add.
	* binding/ruby/lib/milter/manager/cidr-table.rb: use the above files.

	* html/blog/tdiary.conf: follow tDiary path change.

2010-08-05  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/lib/milter/manager/cidr-table.rb,
	binding/ruby/test/manager/test-cidr-table.rb: accept any value for
	result.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/lib/milter/manager/cidr-table.rb,
	binding/ruby/lib/milter/manager/exception.rb,
	binding/ruby/test/manager/test-cidr-table.rb: add Postfix
	cidr_table(5) parser.

2010-08-04  Kouhei Sutou  <kou@cozmixng.org>

	* configure.ac: 1.5.3 -> 1.6.0.

	* milter-manager.spec.in: follow file list changes.

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

	* test/manager/test-manager.c: reset LANG on test process not egg
	option because test process has needed environment variables. They
	should be inherited to hatched milter manager.

	* html/, doc/: 1.5.2 -> 1.5.3.

	* milter-manager.spec.in: update 1.5.3 entry.

	* admin/Makefile.am: update.

	* binding/ruby/Makefile.am (test_unit_files): update.

	* admin/, doc/: Rails 2.3.5 -> Rails 2.3.8.

	* NEWS*: add 1.5.3 entry.

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

	* doc/configuration.rd*: add a tag name for "Trust" section.

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

	* tool/milter-test-server.c: remove '-c' short option for --color
	option.

2010-08-01  Kouhei Sutou  <kou@cozmixng.org>

	* doc/ruby-milter-reference.rd.ja: add abstract.

	* binding/ruby/lib/milter/client/command-line.rb: make default
	options customizable.

	* doc/ruby-milter-tutorial.rd.ja: complete.

	* binding/ruby/sample/milter-regexp.rb: add. An example milter.

	* test/libmilter/test-libmilter-compatible.c: restore log level
	changed in test.

2010-07-31  Kouhei Sutou  <kou@cozmixng.org>

	* doc/configuration.rd*: add to_ip_address methods.

2010-07-25  Kouhei Sutou  <kou@cozmixng.org>

	* doc/ruby-milter-tutorial.rd.ja: add callback list.

	* binding/ruby/sample/milter-test-client.rb, configure.ac: add
	milter-test-client implementation in Ruby.

	* binding/ruby/lib/milter/client.rb,
	binding/ruby/lib/milter/client/command-line.rb: log error by
	default.

	* binding/ruby/src/toolkit/rb-milter-error-emittable.c,
	binding/ruby/src/toolkit/rb-milter-core.c,
	binding/ruby/src/toolkit/rb-milter-core-private.h,
	binding/ruby/src/toolkit/Makefile.am: support error signal.

	* milter/core/milter-logger.[ch],
	test/suite-milter-manager-test.c,
	test/libmilter/test-libmilter-compatible.c: log critical and error
	error by default.

	* binding/ruby/src/toolkit/rb-milter-protocol-agent.c
	(Milter::ProtocolAgent#macros): returns nil for NULL macros.

	* binding/ruby/lib/milter/client/command-line.rb: ---use-syslog ->
	--syslog.

	* binding/ruby/lib/milter/client/command-line.rb: add --use-syslog
	option.

	* binding/ruby/src/toolkit/rb-milter-client.c: bind
	milter_client_start_syslog().

	* tool/milter-test-client.c: use client managed syslog.

	* milter/client.h, milter/client/milter-client.c: manager syslog
	logger in client.

	* binding/ruby/lib/milter/client/command-line.rb: add
	--unix-socket-mode option.

	* binding/ruby/src/toolkit/rb-milter-client.c,
	binding/ruby/test/toolkit/test-client.rb: accept string as file mode.

	* tool/milter-test-client.c, milter/core/milter-utils.[ch]: move
	file mode parse function to share codes.

	* tool/milter-test-client.c: fix a typo.

2010-07-24  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/src/toolkit/rb-milter-client.c,
	binding/ruby/test/toolkit/test-client.rb: bind unix_socket_mode.

	* tool/milter-test-client.c: set_default_unix_socket_XXX() ->
	set_unix_socket_XXX().

	* milter/client.h, milter/client/milter-client.c,
	milter/manager/milter-manager.c, test/client/test-client.c: add a
	setter for UNIX domain socket mode.

	* tool/milter-test-client.c: add --unix-socket-mode option.

	* tool/milter-test-client.c, doc/milter-test-client.rd*:
	--socket-group -> --unix-socket-group.

	* binding/ruby/lib/milter/client/command-line.rb: add --user,
	--group and --unix-socket-group option.

	* binding/ruby/src/toolkit/rb-milter-client.c,
	binding/ruby/test/toolkit/test-client.rb: bind effective_user,
	effective_group and unix_socket_group accessor.

	* milter/client.h, milter/client/milter-client.c,
	milter/manager/milter-manager.c, test/client/test-client.c: add a
	setter for UNIX domain socket group.

	* binding/ruby/lib/milter/client/command-line.rb
	(Milter::Client::CommandLine#setup_basic_options): --version ->
	--library-version.

	* tool/milter-test-client.c: fix typos.

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

	* libmilter/libmilter-compatible.c: remove a garbage.

2010-07-16  Kouhei Sutou  <kou@cozmixng.org>

	* tool/milter-test-client-libmilter.c,
	libmilter/libmilter-compatible.c: use smfi_version() for memory
	profile workaround.

	* tool/milter-test-server.c (send_body_chunk): add a missing blank line.

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

	* po/POTFILES.in: update.

	* test/core/test-connection.c: use NULL instead of "0" for any
	host name.

	* binding/ruby/test/manager/test-configuration.rb,
	binding/ruby/test/manager/test-egg.rb,
	binding/ruby/test/manager/test-freebsd-rc-detector.rb: follow the
	recent default timeout value changes.

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

	* test/tool/test-log-analyzer.rb, test/tool/fixtures/: always use 2009.

	* milter/manager/milter-manager-main.c,
	test/manager/test-manager.c: ignore controller socket listening failure.

	* tool/milter-test-server.c: use inet_pton() instead of inet_aton().
	Patch by SATOH Fumiyasu. Thanks!!!

	* tool/milter-manager-log-analyzer: support Solaris syslog message
	with message ID.
	Patch by SATOH Fumiyasu. Thanks!!!

	* milter/core/milter-syslog-logger.c: don't use LOG_AUTHPRIV and
	LOG_FTP when they aren't existed. (e.g. Solaris)
	Patch by SATOH Fumiyasu. Thanks!!!

	* configure.ac: add "-D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS" to
	cpp flags for supporting Solaris.
	Patch by SATOH Fumiyasu. Thanks!!!

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

	* data/applicable-conditions/trust.conf: add softbank.ne.jp to
	trusted domains.

	* milter-manager.spec.in: add a 1.5.3 entry.

	* data/applicable-conditions/Makefile.am (dist_conditions_DATA):
	add missing trust.conf.

	* data/applicable-conditions/trust.conf, data/defaults/*.conf,
	doc/configuration.rd*: add a new Trust applicable condition.

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

	* milter/manager/milter-manager-process-launcher.c: redirect
	launched outputs to logger.

	* milter/manager/milter-manager-main.c: support syslog in launcher.

	* binding/ruby/Makefile.am: update test-unit files.

	* milter/manager/milter-manager-egg.c, test/manager/test-egg.c,
	doc/configuration.rd*:subtract 3 seconds from default timeout for
	ensuring response to MTA on timeout.

2010-06-04  Kouhei Sutou  <kou@cozmixng.org>

	* milter/manager/milter-manager-children.c,
	test/fixtures/leader/negotiate-no-bind.conf,
	test/fixtures/leader/negotiate-no-bind.txt,
	test/lib/milter-test-client.rb, test/manager/test-leader.c:
	ensure returning negotiate reply on negotiation failure.

2010-05-29  Kouhei Sutou  <kou@clear-code.com>

	* NEWS*: fix typos.

	* Makefile.am (upload-coverage): use coverage-force instead of coverage.

	* admin/: don't use locale_rails because it's not work with the
	latest I18n.

	* binding/ruby/test/toolkit/test-option.rb: fix expected value.

	* configure.ac: 1.5.2 -> 1.5.3.

	* *: 1.5.1 -> 1.5.2.

	* html/index.html*: Ubuntu Karmic Koara -> Ubuntu Lucid Lynx.

	* README*: fix dependency OS.

	* html/index.html*: CentOS 5.4 -> 5.5.

2010-05-28  Kouhei Sutou  <kou@clear-code.com>

	* milter-manager.spec.in: 1.5.2-1 -> 1.5.2-2.

	* doc/install-to-ubuntu.rd*: Karmic Koara -> Lucid Lynx.

	* doc/install-to-centos.rd*: 5.4 -> 5.5.

	* doc/install-to-*.rd*: use 'note' instead of 'tip'.

	* doc/install-to-*.rd*: add more recommended
	milter-greylist configurations.

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

	* doc/install-to-debian.rd.ja: add more recommended
	milter-greylist configurations.

	* NEWS*: add 1.5.2 entry.

2010-05-24  Kouhei Sutou  <kou@clear-code.com>

	* test/manager/test-children.c, test/run-test.sh: don't unset LANG.

2010-05-23  Kouhei Sutou  <kou@cozmixng.org>

	* tool/milter-manager-log-analyzer: support milter-greylist 4.x
	SPF test format.

	* tool/milter-manager-log-analyzer: add missing '+'.

	* data/munin/milter_manager_: support item order customize.

	* tool/milter-manager-log-analyzer: support tarpit status.

	* doc/install-to-*.rd*: add 'autowhite 1w' to milter-greylist
	configuration.

2010-05-22  Kouhei Sutou  <kou@cozmixng.org>

	* data/applicable-conditions/s25r.conf,
	doc/configuration.rd*: make S25R whitelist and blacklist are
	customizable.

	* tmp/milter-report-port.rb: add a sample milter.

	* binding/ruby/lib/milter/client.rb: add missing :data.

	* binding/ruby/lib/milter/client/command-line.rb: remove a garbage
	option: --database-path.

2010-05-20  Kouhei Sutou  <kou@clear-code.com>

	* doc/available-milters.rd*: add Kaspersky Anti-Virus Linux Mail
	Server 5.6 and Kaspersky Anti-Spam 3.0.
	Reported by ROSSO. Thanks!!!

2010-05-19  Kouhei Sutou  <kou@clear-code.com>

	* data/applicable-conditions/s25r.conf: add obsmtp.com to
	whitelist.

2010-05-11  Kouhei Sutou  <kou@cozmixng.org>

	* html/index.html*: use dev page for link of available milters
	page for now.

	* doc/reference/Makefile.am: fix typos.

	* doc/available-milters.rd*: add Cloudmark Authority.

2010-05-11  Kouhei Sutou  <kou@clear-code.com>

	* doc/available-milters.rd*: add available milter list.
	* doc/reference/, html/: add a link to available milter list.

2010-05-08  Kouhei Sutou  <kou@cozmixng.org>

	* milter-manager.spec.in: include milter-test-client-libmilter.

	* libmilter/mfapi.h: remove duplicated includes.

	* tool/milter-test-client-libmilter.c: add missing include <glib.h>.

	* milter-manager.spec.in: 1.5.2-0 -> 1.5.2-1.

	* milter/manager/milter-manager-children.c: add NULL check.

	* milter/core/milter-option.h: no-reply-header should be
	no-reply-mask not no-event-mask.

	* milter/manager/milter-manager-children.c: suppress a warning.

	* milter/manager/milter-manager-children.c,
	milter/manager/milter-manager-leader.c: also work with
	no reply {data,header,end-of-header,body}.
	Reported by ROSSO. Thanks!!!

	* milter/manager/milter-manager-children.[ch],
	test/lib/milter-test-client.rb, test/manager/test-children.c:
	work with no reply {connect,hello,envelope-from,envelope-recipient}.

	* tool/milter-test-client-libmilter.c: body reply is also omitted.

	* milter/server/milter-server-context.c: set reading timeout on body.

	* milter/server/milter-server-context.[ch],
	test/server/test-server-context-step.c: make
	milter_server_context_need_reply() public.

2010-05-07  Kouhei Sutou  <kou@cozmixng.org>

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

	* milter/server/milter-server-context.c, test/tool/test-server.c,
	tool/milter-test-server.c: support NO_REPLY steps.
	Reported by ROSSO. Thanks!!!

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

	* tool/milter-test-client-libmilter.c: add a test client with libmilter.

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

	* TODO: add: [1.7.x] use epoll/kqueue or libev/libevent.

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

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

	* binding/ruby/Makefile.am: fix test-unit files path.

	* binding/ruby/glib-0.16.0/: disable thread support.

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

	* milter/server/milter-server-context.c: ensure disabling timeout
	callback before set new timeout.

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

	* NEWS*: add 1.5.2 entry.

	* milter/, test/: use inet_pton() and inet_ntop() instead of
	inet_aton() and inet_ntoa().
	Suggested by SATOH Fumiyasu. Thanks!!!

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

	* binding/ruby/Makefile.am (EXTRA_DIST): add test-unit files again.

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

	* NEWS*: fix typos.

	* configure.ac: 1.5.1 -> 1.5.2.

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

	* NEWS*: fill 1.5.1 release date.

	* doc/configuration.rd, doc/milter-test-client.rd: fill TODO.

	* doc/configuration.rd.ja, doc/milter-test-client.rd.ja: fill TODO.

2010-04-19  Kouhei Sutou  <kou@clear-code.com>

	* milter-manager.spec.in: 1.5.1-1 -> 1.5.1-2.

	* ./: update the latest development release information.

	* test/tool/fixtures/Makefile.am: .dump -> .fetch.

	* configure.ac: add do-nothing distdir and dist targets to
	Ruby/GLib2 makefile.

2010-04-18  Kouhei Sutou  <kou@cozmixng.org>

	* NEWS*: add 1.5.1 entry.

2010-04-17  Kouhei Sutou  <kou@cozmixng.org>

	* tool/milter-manager-log-analyzer: fix variable name.

	* test/run-test.sh: don't depend on Ruby/GLib version number.

	* binding/ruby/test/toolkit/test-logger.rb: add profile log level.

	* test/run-test.sh: 0.19.3 -> 0.19.4.

	* binding/ruby/glib-0.19.3/: removed.

	* binding/ruby/glib-0.19.4/extconf.rb: don't embed version number.

	* binding/ruby/glib-0.19.4/extconf.rb: 0.19.3 -> 0.19.4.

	* configure.ac: use bundled Ruby/GLib 0.19.4 if system Ruby/GLib
	< 0.19.4.

	* configure.ac, binding/ruby/Makefile.am: use Ruby/GLib 0.19.4.

	* binding/ruby/glib-0.19.4/: sync.

	* binding/ruby/glib-0.19.4/: copy from glib-0.19.3/.

2010-04-15  Kouhei Sutou  <kou@cozmixng.org>

	* README*: add contribution for Solaris by SATOH Fumiyasu to
	thanks list. Thanks!!!

	* gtk-doc.make: work without gtkdoc-rebase.
	Reported by SATOH Fumiyasu. Thanks!!!

	* module/configuration/ruby/Makefile.am,
	binding/ruby/src/toolkit/Makefile.am,
	binding/ruby/src/manager/Makefile.am: remove -no-undefined from
	Ruby related shared libraries for Solaris.
	Patch by SATOH Fumiyasu. Thanks!!!

	* milter/core/milter-logger.h: use G_STRFUNC instead of
	__PRETTY_FUNCTION__ for Solaris.
	Reported by SATOH Fumiyasu. Thanks!!!

	* configure.ac, milter/core/Makefile.am,
	milter/client/Makefile.am, milter/manager/Makefile.am,
	milter/server/Makefile.am: detect -lsocket and -lnsl for Solaris.
	Reported by SATOH Fumiyasu. Thanks!!!

	* binding/ruby/src/manager/Makefile.am: use MILTER_RUBY_LIBS
	instead of RUBY_LIBS for GLib.
	Patch by SATOH Fumiyasu. Thanks!!!

	* README*: add SATOH Fumiyasu to thanks list. Thanks!!!

	* milter/manager/milter-manager-children.h,
	binding/ruby/src/manager/rb-milter-manager-children.c: remove
	needless milter_manager_children_get_quitted_children() codes.
	Reported by SATOH Fumiyasu. Thanks!!!

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

	* doc/*-options-*: install rack explicitly.
	Reported by Tsuchiya. Thanks!!!

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

	* milter-manager.spec.in: 1.5.0 -> 1.5.1.

	* doc/install-options-to-freebsd.rd*: add missing ruby-iconv
	dependency.
	Reported by Tsuchiya. Thanks!!!

	* doc/install-to-freebsd.rd*, doc/install-options-to-freebsd.rd*:
	fix wrong portupgrade arguments.
	Reported by Tsuchiya. Thanks!!!

2010-04-07  Kouhei Sutou  <kou@cozmixng.org>

	* tool/milter-test-client.c: add --report-memory-profile option.

	* doc/milter-test-client.rd*: add place holder for
	--report-memory-profile option. TOOD: document it.

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

	* milter/core/milter-memory-profile.c: fix data size.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/src/toolkit/rb-milter-memory-profile.c: report
	profile data as statistics.

	* milter/core/milter-memory-profile.[ch]: also provide profile data.

	* milter/core/milter-logger.c: use black background color instead
	of white.

	* milter/core/milter-core.c: init memory profiler before GLib init.

	* binding/ruby/lib/milter/manager.rb: add
	manager.report_memory_profile for debugging.

	* binding/ruby/lib/milter/toolkit.rb,
	binding/ruby/lib/milter/manager.rb: use 'milter' not
	'milter-manager' as the default log domain.

	* binding/ruby/src/toolkit/rb-milter-memory-profile.c,
	binding/ruby/src/toolkit/rb-milter-core.c,
	binding/ruby/src/toolkit/rb-milter-core-private.h: bind memory
	profiler.

	* milter/core/milter-memory-profile.[ch]: add memory profiler
	based on GLib's gmem.c.

	* milter/core/, test/core/: use memory profiler.

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

	* milter/manager/milter-manager-main.c: reload configuration in
	main event loop not signal handler.

	* milter/core/milter-syslog-logger.c: use MILTER_LOG_SYSLOG_LEVEL
	environment variable to set log level for syslog logger.

2010-03-28  Kouhei Sutou  <kou@cozmixng.org>

	* html/index.html*: add install guide for development series for
	Karmic.

	* html/index.html*, doc/reference/header*.html: use
	install-to.html instead of install.html for installation guide
	index page.

	* doc/upgrade-on-*: add a link to optional package upgrade guide.

	* doc/install-to-*: add a link to optional package installation.

	* doc/install-to-*: add development series installation guide.

	* NEWS: remove a garbage.

	* doc/: use more stylish name for internal links.

	* configure.ac: 1.5.0 -> 1.5.1.

	* NEWS*: import 1.4.2 release.

	* doc/install-to-centos.rd*: fix repository PRM file.

	* doc/: fix link paths.

	* Makefile.am: don't upload RPM.

	* html/index.html*: use news.release-X-X-X as fragment.

	* doc/configuration.rd*: fix markup.

	* html/: update stable release date.

	* NEWS*: update.

	* doc/configuration.rd*: add "Since 1.5.0" marks.

	* doc/configuration.rd.ja: fill in stress related applicable
	conditions on document.

	* binding/ruby/lib/milter/manager/breaker.rb: add missing 'type' field.

	* binding/ruby/lib/milter/toolkit.rb: use const_get instead of
	from_string.

2010-03-27  Kouhei Sutou  <kou@cozmixng.org>

	* milter/manager/milter-manager-main.c: fix custom
	configuration directory owner and group.

	* data/rc.d/milter-manager: use milter-manager group if available.

	* doc/install-to-freebsd.rd*: use milter-manager group for
	effective group.

	* doc/install-to-freebsd.rd*: add missing -m option.

2010-03-22  Kouhei Sutou  <kou@cozmixng.org>

	* doc/configuration.rd*: add "Stress Notify" and "No Stress" place
	holder with TODO. :P

	* binding/ruby/lib/milter/manager/breaker.rb,
	binding/ruby/test/manager/test-breaker.rb: fix inverted condition.

	* data/defaults/: apply "Stress Notify" and "No Stress" applicable
	conditions by default.

	* data/applicable-conditions/stress.conf: add "Stress Notify" and
	"No Stress" applicable conditions.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/lib/milter/manager/breaker.rb,
	binding/ruby/test/manager/test-breaker.rb: add breaker.

	* binding/ruby/lib/milter/manager/netstat-connection-checker.rb:
	improve log format.

2010-03-21  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/src/toolkit/rb-milter-client-context.c,
	binding/ruby/test/toolkit/test-client-context.rb: bind
	n_processing_sessions.

	* binding/ruby/lib/milter/manager/child-context.rb,
	binding/ruby/test/manager/test-child-context.rb,
	binding/ruby/test/manager/test-configuration-loader.rb,
	binding/ruby/test/manager/test-configuration.rb: work tests again!

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/lib/milter/manager/child-context.rb: export
	n_processing_sessions to applicable condition callback.

	* milter/core/milter-marshalers.list,
	milter/manager/milter-manager-applicable-condition.[ch],
	milter/manager/milter-manager-configuration.[ch],
	milter/manager/milter-manager-egg.[ch],
	milter/manager/milter-manager-leader.c,
	test/manager/,
	binding/ruby/src/manager/rb-milter-manager-configuration.c,
	binding/ruby/test/manager/test-configuration.rb: pass client
	context to MilterManagerApplicableCondition::attach-to signal.

	* milter/client.h, milter/client/milter-client.c,
	milter/client/milter-client-objects.h,
	milter/client/milter-client-context.[ch], test/: pass client to
	client context and add reader for n_processing_sessions.

	* milter/manager/milter-manager-children.h: remove needless #include.

	* data/munin/postfix_processes: fix a typo.

	* data/munin/milter_manager_: fetch more interesting value.

2010-03-20  Kouhei Sutou  <kou@cozmixng.org>

	* milter/manager/milter-manager-configuration.c
	(DEFAULT_MAINTENANCE_INTERVAL): 100 -> 10.

	* binding/ruby/lib/milter/manager.rb: add memory reporter object.

	* binding/ruby/lib/milter/manager.rb: also show memory usage in
	statistics log.

	* binding/ruby/lib/milter/manager.rb: cleared maintained hook on
	configuration is cleared.

	* milter/manager/milter-manager-configuration.[ch],
	module/configuration/ruby/milter-manager-ruby-configuration.c: add
	callback on configuration is cleared.

	* milter/manager/milter-manager-configuration.c: split a large
	function to small functions.

	* binding/ruby/lib/milter/manager.rb: add 'manager.maintained' and
	'manager.report_memory_statistics' configuration APIs.
	TODO: document them.

	* milter/manager/milter-manager-configuration.[ch],
	module/configuration/ruby/milter-manager-ruby-configuration.c:
	support 'maintain' hook.

	* binding/ruby/lib/milter/toolkit.rb: accept nil as optional
	backtrace information.

	* binding/ruby/lib/milter/toolkit.rb: remove a garbage argument.

2010-03-18  Kouhei Sutou  <kou@cozmixng.org>

	* doc/configuration.rd.ja: add documents for applicable conditions.

2010-03-17  Kouhei Sutou  <kou@cozmixng.org>

	* doc/configuration.rd*: add place-holders for applicable
	conditions documentation.

2010-03-16  Kouhei Sutou  <kou@cozmixng.org>

	* data/applicable-conditions/remote-network.conf,
	test/manager/test-leader.c,
	test/fixtures/leader/applicable-condition-remote-network.*: add
	'remote_network.add_local_address' configuration.

	* binding/ruby/lib/milter/manager/address-matcher.rb,
	binding/ruby/test/manager/test-address-matcher.rb: support remote
	address.

	* binding/ruby/lib/milter/manager/local-address-matcher.rb,
	binding/ruby/test/manager/test-address-matcher.rb: rename
	to ...
	* binding/ruby/lib/milter/manager/address-matcher.rb,
	binding/ruby/test/manager/test-address-matcher.rb: ... them.

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

	* tool/milter-manager-log-analyzer: show concurrent connections.

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

	* tool/milter-manager-log-analyzer: fix RRD migration failure.

	* data/munin/milter_manager_: fix typos.

	* tool/milter-manager-log-analyzer, data/munin/milter_manager_:
	collect n concurrent connections.

	* doc/install-to-freebsd.rd*: add recommended configurations.

2010-03-13  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/lib/milter/manager/local-address-matcher.rb,
	binding/ruby/test/manager/test-local-address-matcher.rb: add
	LocalAddressMatcher.

2010-03-12  Kouhei Sutou  <kou@cozmixng.org>

	* milter/client/milter-client.c,
	milter/client/milter-client-private.h,
	test/client/test-client.c: maintain on no processing sessions even
	if maintenance_interval is 0.

	* milter/client/milter-client.c,
	milter/client/milter-client-private.h,
	test/client/test-client.c: add a test for maintenance configuration.

	* milter/manager/milter-manager-leader.c: add negotiated check to
	avoid negotiation failure.

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

	* milter-manager.spec.in: fix a typo.

	* milter/: log on dispose.

	* test/run-test.sh: also export RUBYLIB for test-milter-client.rb.

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

	* data/munin/postfix_processes: use master process for detecting
	Postfix is running.

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

	* doc/ruby-milter-reference.rd*, doc/ruby-milter-tutorial.rd*,
	doc/reference/: add placeholder.
	* NEWS*: link to Ruby integration part.

	* doc/milter-performance-check.rd*, TODO: add document for
	--reading-timeout, --connect-host and --connect-address options.

	* doc/milter-test-server.rd*, TODO: add document for --*-timeout
	option of milter-test-server.

	* milter-manager.spec.in: use --remove-also.

	* data/munin/sendmail_processes: remove grep itself from statistics.

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

	* doc/install-options-to-freebsd.rd.ja: add missing munin and
	Apache integration.

	* doc/configuration.rd*: fix default manager.max_connections value.

	* tool/milter-performance-check: add --reading-timeout option.

	* doc/install-to-freebsd.rd*: add missing chown mailnull:mailnull
	/var/milter-greylist/.

	* TODO: add:
	[1.5.0] milter-performance-check: document for --connect-host
	and --connect-address options.

	* tool/milter-performance-check: support support XCLIENT: add
	--connect-host and --connect-address option.

	* TODO: add:
	[1.5.0] milter-test-server: document for --*-timeout options.

	* tool/milter-test-server.c: add --connection-timeout,
	--reading-timeout, --writing-timeout and --end-of-message-timeout
	option.

	* doc/ruby-milter-tutorial.rd*: add but not completed yet...

	* binding/ruby/lib/milter/client/command-line.rb: remove a garbage.

	* binding/ruby/lib/milter/client.rb: pass context to session
	initialize not each callback.

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

	* milter/core/milter-version.h.in: use milter manager version.

	* binding/ruby/src/toolkit/rb-milter.c (Milter::TOOLKIT_VERSION): add.

	* doc/, html/: 1.3.1 -> 1.5.0.

	* doc/install.rd*: update dependencies.

2010-03-07  Kouhei Sutou  <kou@cozmixng.org>

	* milter-manager.spec.in: remove existing munin plugins before
	installing plugins.

	* doc/install-options-to-*.rd*: update "how to install milter
	manager admin".

	* TODO: remove: [1.5.0] milter manager admin: Rails 2.3.4 -> 2.3.5

	* doc/upgrade-options-on-*.rd*: update "how to upgrade milter
	manager admin".

	* admin/app/controllers/sessions_controller.rb: use root_url
	instead of '/'.

	* admin/config/environment.rb: Rails 2.3.4 -> 2.3.5.

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

	* doc/install-options-to-*.rd: add milter-manager-log-analyzer
	and Munin integration.

	* doc/install-options-to-*.rd.ja: add backward compatibility note
	for mitler-manager-munin-plugins.

	* doc/install-to-freebsd.rd.ja: move RRDtool installation to ...
	* doc/install-options-to-freebsd.rd.ja: ... here.

	* doc/install-options-to-*.rd.ja: add milter-manager-log-analyzer
	and Munin integration.

	* milter-manager.spec.in: munin-plugin -> munin-plugins.

	* doc/install-to-freebsd.rd*: 7.x-RELEASE -> 8.0-RELEASE.

	* TODO: remove [1.5.0] Debian package: support Munin plugins

	* module/configuration/ruby/milter-manager-ruby-configuration.c:
	prepend MILTER_MANAGER_RUBYLIB environment variable to include
	path for testing.
	* test/run-test.sh: use MILTER_MANAGER_RUBYLIB instead of RUBYLIB.

	* milter/core/milter-logger.h: use G_LOG_LEVEL_MASK instead of
	enumerating all log level.

	* milter/core/milter-core.c: re-delegate GLib log handler in
	reinit to avoid Ruby/GLib log handler is used.

	* milter/client/milter-client.c: fix a typo.

	* milter/manager/milter-manager.c: add a debug message.

2010-03-07  Kouhei Sutou  <kou@cozmixng.org>

	* data/munin/*: return non-0 exit status when auto config returns 'no'.

	* data/munin/*: accept auto command.

	* NEWS*: add --enable-ruby-milter option.

	* configure.ac: add checking message for Ruby milter install directory.

	* milter-manager.spec.in: use /usr/lib instead of %{_libdir} for
	x86_64 environment.

	* configure.ac: Ruby milter is disabled by default.

	* milter-manager.spec.in: add missing installed files.

	* milter-manager.spec.in: support --enable-ruby-milter.

	* configure.ac: remove a needless space after 'sed -i'.

	* binding/ruby/Makefile.am (SUBDIRS): add missing ruby-milter directory.

	* configure.ac, binding/ruby/ruby-milter: add --enable-ruby-milter
	to use Ruby bindings with 'require "milter"'.

2010-03-06  Kouhei Sutou  <kou@cozmixng.org>

	* test/client/test-client.c: add tests for effective user and group.

	* test/client/test-client.c: add a test for max_connections.

	* test/client/test-client.c: add a test for maintenance_interval.

	* milter/manager/milter-manager-configuration.[ch],
	milter/manager/milter-manager.c: move lazy finisher and maintain
	checker to ...
	* milter/client/milter-client.c, milter/client.h: ... here.

	* TODO: remove: [1.5.x] use /usr/sbin/service XXX start instead
	of /etc/init.d/XXX start.

	* TODO: add items for 1.5.0 release.

	* NEWS*: add 1.5.0 entry.

	* doc/install-options-to-centos.rd.ja: fix a typo.

	* doc/reverse-dictionary.rd*: add references to Debian.

	* doc/configuration.rd*: fix a typo.

	* doc/milter-performance-check.rd*: add --n-concurrent-connections
	option document.

	* milter-manager.spec.in: split Ruby bindings for milter-toolkit.

	* milter/manager/milter-manager-controller.c: use default priority
	idle for lazy context unref.

	* milter/manager/milter-manager-children.c: use default priority
	idle for lazy negotiate response.

	* milter/manager/milter-manager-configuration.[ch]
	(milter_manager_configuration_n_sessions_finished): add.

	* milter/manager/milter-manager.c: use default priority idle for
	dispose leaders.

	* milter/client/milter-client.c: use idle with default priority
	instead of timeout.

	* milter/client/milter-client.c: use timeout instead of idle.

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

	* data/munin/milter_manager_: support disconnected statistics.

	* tool/milter-manager-log-analyzer: support disconnected statistics.

	* tool/milter-performance-check: randomly sleep before each
	concurrent connection.

	* milter/manager/milter-manager.c: restrict number of leaders to
	be checked per connection check to 30.
	TODO: make 30 customizable.

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

	* tool/milter-test-client.c: daemon -> run_as_daemon to avoid
	symbol collision on FreeBSD.

	* milter/manager/milter-manager-leader.c: send abort and quit to
	children on disconnected.

	* tool/milter-performance-check: don't use more connections over mails.

	* doc/milter-test-client.rd*: add new options.

	* tool/milter-test-client.c: use G_OPTION_FLAG_REVERSE.

	* tool/milter-test-client.c: add --user, --group, --socket-group options.

	* tool/milter-test-client.c: add --daemon option.

	* tool/milter-test-client.c: add --no-report-request option.

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

	* data/munin/sendmail_processes: remove needless grep.

	* milter-manager.spec.in: support sendmail_processes Munin plugin.

	* data/munin/sendmail_processes: add.

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

	* doc/install-to-freebsd.rd*: remove a needless argument.

	* doc/upgrade-on-freebsd.rd*: use CPPFLAGS for -I instead of CFLAGS.

	* data/munin/*: add license headers.

	* doc/install-to-freebsd.rd*: use CPPFLAGS for -I instead of CFLAGS.

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

	* binding/ruby/src/manager/rb-milter-manager-children.c: fix a
	memory leak.

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

	* milter/client/milter-client.c: fix a memory leak.

	* milter/manager/milter-manager.c: fix wrong signal disconnected.

2010-02-28  Kouhei Sutou  <kou@cozmixng.org>

	* tool/milter-performance-check: add --n-concurrent-connections option.

	* milter/client/milter-client.c (finish_processing): fix a memory leak.

	* milter-manager.spec.in: support postfix_processes.

	* data/munin/postfix_processes: add.

	* data/munin/milter_manager_memory: remove garbages.

2010-02-26  Kouhei Sutou  <kou@cozmixng.org>

	* milter-manager.spec.in: ensure restarting munin-node.

	* binding/ruby/lib/milter/compatible.rb (Shellwords#escape): fix
	variable name.

2010-02-25  Kouhei Sutou  <kou@clear-code.com>

	* milter-manager.spec.in: add %{?dist} in release name.

	* data/munin/milter_manager_ : use "nan" for no-available value case.

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

	* data/munin/milter_manager_memory: add missing "-".

	* configure.ac: pass CPPFLAGS to bundled Ruby/GLib2 but ","
	can't be included in CPPFLAGS.

	* data/munin/milter_manager_memory: add.

	* configure.ac: use "ruby -run -e mkdir -- -p" instead of
	"$mkdir_p" for portability.

	* binding/ruby/lib/milter/manager/*-detector.rb,
	binding/ruby/test/manager/test-debian-init-detector.rb: use
	service command instead of init or rc script for starting milter
	when service command is available.

2010-02-21  Kouhei Sutou  <kou@clear-code.com>

	* data/munin/milter_manager_: use '_' instead of '-' in name
	because munin 1.4.x can't handle '-' correctly.

	* milter-manager.spec.in: just install milter manager related
	munin plugins.

	* milter-manager.spec.in: create milter-manager-munin-plugin package.

	* data/munin/milter_manager_ : add missing "Stop" label.

	* data/munin/milter_manager_ : add missing "smtp" to order.

	* milter-manager.spec.in: use -eq instead of =.

	* data/munin/milter_manager_: number of SMTP isn't needed for report.

	* milter/manager/milter-manager-leader.[ch]: move connection check
	callback to ...
	* milter/manager/milter-manager.c: ... here.

2010-02-20  Kouhei Sutou  <kou@clear-code.com>

	* milter/client/milter-client.c: move detach_io() to ...
	* milter/core/milter-utils.[ch]: ... here.
	* milter/manager/milter-manager-main.c: use
	milter_utils_detach_io() for process launcher.

	* milter/manager/milter-manager-main.c: PID file should be written
	after daemonized.

	* milter/manager/milter-manager-main.c: PID file should be written
	after privilege is dropped.

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

	* milter/manager/milter-manager-main.c (milter_manager_init): set
	default log level as critical|error|warning|statistics.

	* binding/ruby/lib/milter/manager/netstat-connection-checker.rb
	(Milter::NetstatConnectionChecker#netstat): fix a typo.

	* milter/: avoid needless memory allocation for logging.

	* milter/core/milter-logger.[ch],
	test/core/test-logger.c,
	test/core/test-syslog-logger.c,
	test/manager/test-children.c: don't evaluate log message arguments
	if log level isn't matched.

	* milter/core/milter-logger.[ch], milter/core/milter-syslog-logger.c,
	test/core/test-logger.c, test/core/test-syslog-logger.c,
	test/core/test-utils.c: don't parse MILTER_LOG_LEVEL environment
	variable on every logging. MILTER_LOG_LEVEL environment variable
	is just evaluated at the first time.

	* data/munin/milter_manager_: show also SMTP value.

	* tool/milter-manager-log-analyzer: add LAST consolidation
	function.
	* data/munin/milter_manager_: use LAST value.

2010-02-19  Kouhei Sutou  <kou@clear-code.com>

	* data/munin/milter_manager_: use symbolic link style instead of
	munin 1.4.x multigraph style.

	* milter/manager/milter-manager/children.[ch],
	test/manager/test-leader.c,
	test/fixtures/leader/negotiate.txt: don't request steps that any
	children not-requested.

	* binding/ruby/lib/milter/manager/netstat-connection-checker.rb:
	detect available netstat command line.

	* milter-manager.spec.in: include munin plugin.

	* tool/milter-manager-log-analyzer: speed up. ignore older lines.

	* test/tool/test-log-analyzer.rb: still failed by 2010 problem...

2010-02-18  Kouhei Sutou  <kou@clear-code.com>

	* tool/milter-manager-log-analyzer: speed up. don't use Time.parse.

	* data/munin/milter_manager: work with Ruby 1.8.5 bundled with
	CentOS 5.4.

	* doc/configuration.rd*: manager.max_file_descriptors changes both
	of soft and hard limit.

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

	* data/munin/milter_manager: start Munin support.
	* configure.ac, data/munin/Makefile.am, milter-manager.spec.in:
	follow the above change.

	* milter/manager/milter-manager-main.c: set both soft and hard
	limit.

	* milter/manager/milter-manager-main.c: show more information.

	* data/cron.d/*/milter-manager-log: add nice.

	* data/cron.d/redhat/milter-manager-log: fix target user position.

	* milter/manager/milter-manager-main.c: add TODO:
	find_password() should be unified with find_password() in
	milter_client.c.

	* milter/core/milter-syslog-logger.c: syslog facility can be
	changed by MILER_LOG_SYSLOG_FACILITY environment variable.

	* milter-manager.spec.in:
	- specify the same version explicitly.
	- 1.5.0-1 -> 1.5.0-2.

	* milter-manager.spec.in: increment release version: 1.5.0-0 ->
	1.5.0-1.

	* doc/reverse-dictionary.rd*: fix typo in ID.

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

	* data/cron.d/redhat/milter-manager-log: add rrdtool availability
	check.

	* milter-manager.spec.in: split packages.

	* milter/client/milter-client.c, milter/client.h,
	milter/manager/milter-manager.c,
	milter/manager/milter-manager-main.c,
	test/manager/test-manager.c,
	test/manager/test-controller-context.c: fixed --socket-group-name
	doesn't work.

	* binding/ruby/lib/milter/manager.rb: disable Ruby configuration
	in custom configuration because of security reason.

	* milter/manager/milter-manager-main.c: make default
	log level ERROR.

	* binding/ruby/lib/milter/client/Makefile.am: install
	milter/client/command-line.rb.

	* configure.ac: add missing $(DESTDIR).

	* binding/ruby/Makefile.am: remove an auto-generated file from
	dist files.
	(ruby_glib2_0_16_0_files): fix a typo.

	* data/defaults/redhat.conf: detect OpenDKIM on CentOS.

	* binding/ruby/lib/milter/manager/redhat-init-detector.rb,
	binding/ruby/test/manager/test-redhat-init-detector.rb: support
	OpenDKIM detection.

	* milter/client/milter-client.c: process client in each worker.

	* milter/, test/: pass NULL to agent, reader and writer as a context.

	* milter/core/milter-reader.c,
	milter/core/milter-writer.c: start to make source context customizable.

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

	* milter/client/milter-client.c: add skeleton for multi workers mode.

	* milter/client/milter-client.c: add single_worker prefix for
	preparing multi workers support.

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

	* binding/ruby/lib/milter/client/command-line.rb: add.

2010-02-07  Kouhei Sutou  <kou@cozmixng.org>

	* TODO: add:
	[1.x.x] improve netstat performance.
	use net.inet.tcp.pcblist and net.inet6.ip6.stats
	on FreeBSD and /proc/net/tcp and /proc/net/tcp6 on Linux directly.

	* milter/manager/milter-manager-configuration.c: fix printf format
	warning on 32bit FreeBSD.

	* milter/manager/milter-manager-leader.c,
	milter/manager/milter-manager-configuration.[ch]: separate
	children setup function to avoid GC destroys unexpected children.
	* binding/ruby/src/manager/rb-milter-manager-configuration.c,
	binding/ruby/test/manager/test-configuration.rb,
	test/manager/test-configuration.c: follow the above changes.

	* milter/manager/milter-manager-process-launcher.c (launch): use
	getpwnam_r() instead of getpwnam().

	* milter/manager/milter-manager-children.c: set tag to launcher
	reader/writer.

	* milter/manager/milter-manager-process-launcher.c: reduce user
	privilege in forked process.

	* milter/core/milter-command-decoder.c,
	milter/core/milter-command-encoder.c,
	test/core/test-command-decoder.c,
	test/core/test-command-encoder.c: fix IPv6 connect address
	parsing. It has "IPv6:" prefix.

	* milter/core/milter-protocol-agent.c,
	test/server/test-server-context.c: remove NULL value macro.

	* binding/ruby/src/manager/rb-milter-manager-configuration.c: mark
	leader.

	* milter/core/milter-command-encoder.c (encode_each_macro): add
	NULL check. (Postfix sends "if_addr" == NULL macro)

	* binding/ruby/glib-0.19.3/: backport GRClosure tag from
	Ruby/GLib2 trunk (r3741).

	* milter/manager/milter-manager-children.c,
	milter/manager/milter-manager-process-launcher.c: log launch user name.

	* milter/manager/milter-manager-main.c (milter_manager_main):
	check root user only once.

	* milter/manager/milter-manager-children.c
	(milter_manager_children_start_child): log start-child.
	(cb_connection_error): log not-retry.

2010-02-06  Kouhei Sutou  <kou@cozmixng.org>

	* milter/manager/milter-manager-leader.[ch]
	(milter_manager_leader_get_children): add.

	* binding/ruby/src/manager/rb-milter-manager-children.c,
	binding/ruby/src/manager/rb-milter-manager-configuration.c: fix
	a bug that stop-* signal callback is destroyed by GC.

	* milter/manager/milter-manager-children.c
	(remove_queue_in_negotiate): add finished check.

	* milter/core/milter-writer.[ch]: add start/shutdown check.
	* milter/client/milter-client.c,
	milter/manager/milter-manager-children.c,
	milter/server/milter-server-context.c,
	test/: follow the above change.

	* html/index.html*, doc/install-to-centos.rd*,
	doc/upgrade-on-centos.rd*: use yum instead of RPM directly.

	* milter-manager.spec.in: remove home directory if milter manager
	is uninstalled.

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

	* TODO: add: [1.5.x] use /usr/sbin/service XXX start instead of
	/etc/init.d/XXX start.

2010-02-02  Kouhei Sutou  <kou@cozmixng.org>

	* data/applicable-conditions/s25r.conf: add .google.com to whitelist.

	* binding/ruby/lib/milter/client.rb: default_status -> status_on_error.

	* binding/ruby/lib/milter/client.rb: make status on error customizable.

2010-01-30  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/src/toolkit/rb-milter-client.c: mark processing
	MilterClientContext.

	* milter/client.h, milter/client/milter-client.c
	(milter_client_processing_context_foreach): add for the Ruby bindings.

	* html/milter-manager.css: fix menu bar spaces.

2010-01-29  Kouhei Sutou  <kou@clear-code.com>

	* binding/ruby/lib/milter/client.rb
	(Milter::ClientSession#negotiate): don't request no-reply by default.

	* binding/ruby/lib/milter/client.rb
	(Milter::ClientSession#negotiate): don't request header value with
	leading space by default.

	* milter/manager/milter-manager-children.c
	(init_command_waiting_child_queue): add NULL check for
	no-{envelope-from,envelope-recipient} case.

2010-01-25  Kouhei Sutou  <kou@clear-code.com>

	* milter-manager.spec.in: add missing BuildRequires.

2010-01-24  Kouhei Sutou  <kou@cozmixng.org>

	* milter/client/milter-client.c, milter/server/milter-server.c:
	guard from duplicated initialization.

	* binding/ruby/src/toolkit/rb-milter-core.c,
	binding/ruby/src/toolkit/rb-milter-client.c,
	binding/ruby/src/toolkit/rb-milter-server.c: initialize milter
	library on load.

	* binding/ruby/lib/milter/client.rb: follow the recent API changes.

	* milter/client/milter-client-context.c
	(milter_client_context_class_init): adjust body's chunk size type
	to the current environment.

	* binding/ruby/lib/milter/client.rb
	(Milter::ClientSession#negotiate): remove duplicated item.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/lib/milter/manager/policy-manager.rb,
	test/manager/test-leader.c,
	test/fixtures/leader/connect-policy.{txt,conf}: add experimental
	policy framework.

2010-01-23  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/lib/milter/manager.rb
	(Milter::ConfigurationLoader::ManagerConfiguration#use_netstat_connection_checker):
	use the same time for netstat result lifetime as check interval
	time.

	* configure.ac: also pass $(libdir) to bundled Ruby/GLib2 for
	ruby-glib2.pc.

	* configure.ac: install bundled Ruby/GLib2 to milter manager
	directory instead of Ruby's library directory.

	* milter/core/milter-session-result.[ch],
	test/core/test-session-result.c: add MilterSessionResult.

2010-01-22  Kouhei Sutou  <kou@cozmixng.org>

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

	* milter/manager/milter-manager-leader.c: show elapsed time on
	connection-check.

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

2010-01-20  Kouhei Sutou  <kou@cozmixng.org>

	* milter/client/milter-client-context.[ch]: support
	MilterMessageResult partially. (maybe not work correctly. It's not
	well tested.)

	* milter/server/milter-server-context.[ch]: use
	milter_message_result_start() and milter_message_result_stop().

	* milter/core/milter-message-result.[ch],
	test/core/test-message-result.c: add milter_message_result_start()
	and milter_message_result_stop().

	* configure.ac: don't override generated Makefile of bundled
	Ruby/GLib2.

	* configure.ac: use Ruby/GLib2 0.16.0 with Ruby 1.8.5.

	* test/run-test.sh: use bundled Ruby/GLib2 if it's built.

2010-01-19  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/glib-0.16.0/, binding/ruby/glib-0.19.3/: add
	version number to source directory path.

	* binding/ruby/glib-0.19.3/: bundle Ruby/GLib 0.19.3.
	* configure.ac, binding/ruby/Makefile.am: use Ruby/GLib 0.19.3 if
	system Ruby/GLib2 is 0.17.0. (e.g. FreeBSD port)

	* binding/ruby/glib/: move to ...
	* binding/ruby/glib-0.16.0/: ... here.
	* configure.ac, binding/ruby/Makefile.am: follow the above change.

	* configure.ac: also undef PACKAGE_BUGREPORT in Ruby's config.h.

	* binding/ruby/src/manager/rb-milter-manager-configuration.c:
	mark the current processing leader on GC.

	* milter/manager/milter-manager.[ch] (milter_manager_get_leaders):
	add const.

	* milter/manager/milter-manager.[ch] (milter_manager_get_leaders):
	add.

	* milter/manager/milter-manager.c: keep the current processing leaders.

	* milter/manager/milter-manager.c: associates configuration with
	its manager.

2010-01-18  Kouhei Sutou  <kou@clear-code.com>

	* milter-manager.spec.in (Group):
	Applications/Internet -> System Environment/Daemons

2010-01-17  Kouhei Sutou  <kou@cozmixng.org>

	* TODO:
	- add:
	[1.5.x] show elapsed time in connection check log when disconnected.
	- remove:
	[1.5.x] detete client connection disconnected by netstat for tarpitting.

	* milter/manager/milter-manager-leader.c (connection_check):
	improve log message.

	* binding/ruby/lib/milter/manager.rb, doc/configuration.rd*: add
	manager.use_netstat_connection_checker.

	* binding/ruby/lib/milter/manager.rb: fix a typo.
	* binding/ruby/test/manager/test-configuration.rb: add tests for
	configured location.

	* binding/ruby/lib/milter/manager.rb: don't define duplicated name
	connection checker.

	* binding/ruby/lib/milter/manager.rb: track configured position of
	all items.

	* binding/ruby/lib/milter/manager/netstat-connection-checker.rb,
	binding/ruby/test/manager/test-netstat-connection-checker.rb,
	binding/ruby/lib/milter/manager.rb,
	binding/ruby/lib/milter/manager/Makefile.am,
	binding/ruby/test/manager/Makefile.am: add connection checker
	based on netstat command.

2010-01-16  Kouhei Sutou  <kou@cozmixng.org>

	* milter/manager/milter-manager-children.c,
	test/manager/test-children.c: return fallback status on timeout
	and error cases.

	* milter/manager/milter-manager-children.c: use fallback status on

	* milter/manager/milter-manager-leader.c: use
	milter_manager_children_abort() instead of
	milter_manager_leader_abort() to avoid leader state is changed.

	* milter/manager/milter-manager-leader.c: use nick name instead of
	full name.

	* milter/manager/milter-manager-leader.c: don't call connection
	checker when milter manager isn't processing a request from MTA.

	* binding/ruby/src/toolkit/rb-milter-client-context.c,
	binding/ruby/lib/milter/manager/connection-check-context.rb:
	export MTA socket address to connection checker.

	* milter/client/milter-client.c: set MTA socket address to
	context.

	* milter/client/milter-client-context.[ch],
	test/client/test-client-context-base.c: add
	milter_client_context_{set,get}_socket_address().

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/lib/milter/manager/Makefile.am,
	binding/ruby/lib/milter/manager/connection-check-context.rb,
	binding/ruby/test/manager/test-configuration.rb,
	doc/configuration.rd*: add manager.connection_check_interval and
	manager.define_connection_checker configuration items.

	* binding/ruby/src/toolkit/rb-milter-core-private.[ch],
	binding/ruby/src/manager/rb-milter-manager-children.c: bind
	milter_manager_children_get_smtp_client_address().

	* milter/manager/milter-manager-leader.c: make children property.

2010-01-15  Kouhei Sutou  <kou@cozmixng.org>

	* milter/manager/milter-manager-children.[ch],
	test/manager/test-children.c: add SMTP client address passed on
	'connect' event getter.

	* test/manager/test-configuration.c (test_clear): add a test for
	connected handler is disconnected by clear().

	* milter/manager/milter-manager-leader.c: use configured
	connection check interval.

	* milter/manager/milter-manager.c: emit configuration's
	'connected' with leader when milter server is connected.

	* milter/manager/milter-manager-configuration.[ch],
	milter/manager/milter-manager-leader.h,
	milter/manager/milter-manager-objects.h: add 'connected' signal to
	configuration.

	* milter/manager/milter-manager-configuration.[ch],
	test/manager/test-configuration.c: add
	milter_manager_configuration_get_connection_check_interval() and
	milter_manager_configuration_set_connection_check_interval().

2010-01-13  Kouhei Sutou  <kou@cozmixng.org>

	* milter/client/milter-client-context.c: use the same name as
	GObject's function prototype declaration.

	* milter/manager/milter-manager-leader.[ch]: implement periodical
	connection check hook but it's not usable from configuration.
	NEEDED WORK:
	- add configuration items:
	-- connection_check_interval
	-- define_connection_checker
	- leader should emit configuration's leader-connected signal for
	  connecting leader's connection-check signal from configuration.

2010-01-12  Kouhei Sutou  <kou@cozmixng.org>

	* milter/manager/milter-manager-leader.c: use fallback status of
	configuration instead of default status.

2010-01-11  Kouhei Sutou  <kou@cozmixng.org>

	* milter/manager/milter-manager-children.h
	(MILTER_MANAGER_CHILDREN_ERROR_NO_NEGOTIATION_RESPONSE): remove
	unused constant.
	* milter/manager/milter-manager-leader.c: follow the above change.

	* test/fixtures/leader/connect-no-available-child.{txt,conf},
	test/fixtures/leader/negotiate-no-available-child.{txt,conf},
	test/manager/test-children.c, test/manager/test-leader.c:
	return negotiate response even if no child milters response.

	* test/fixtures/leader/connect-no-enabled-child.{txt,conf},
	test/fixtures/leader/negotiate-no-enabled-child.{txt,conf},
	test/lib/milter-manager-test-scenario.c,
	test/manager/test-leader.c: work with no enabled child milters.
	 (completed) [#2921078]
	Suggested by Antuan Avdioukhine. Thanks!!!

2010-01-09  Kouhei Sutou  <kou@cozmixng.org>

	* milter/manager/milter-manager-children.c,
	test/fixtures/leader/connect-no-child.{txt,conf},
	test/fixtures/leader/negotiate-no-child.{txt,conf},
	test/manager/test-leader.c: work with no child milters.
	TODO: also work with no enabled child miters.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-configuration-loader.rb,
	doc/configuration.rd*: add "remove_milter" to configuration API.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-configuration.rb: show applicable
	condition configuration specified position in milter definition.
	 (completed) [#2921072]
	Suggested by Antuan Avdioukhine. Thanks!!!

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-configuration.rb: show
	configuration specified position in milter definition.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-configuration.rb: show
	configuration specified position in applicable condition
	definition.

2010-01-06  Kouhei Sutou  <kou@cozmixng.org>

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-configuration.rb: show
	configuration specified position. (not completed yet)

	* binding/ruby/src/manager/rb-milter-manager-configuration.c,
	binding/ruby/test/manager/test-configuration.rb: bind location
	related methods of configuration.

	* test/client/test-client.c (cb_idle_shutdown): sleep 1
	microsecond for waiting server up.

2010-01-05  Kouhei Sutou  <kou@cozmixng.org>

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

2010-01-04  Kouhei Sutou  <kou@cozmixng.org>

	* README*: add Antuan Avdioukhine to thanks list. Thanks!!!

	* binding/ruby/lib/milter/manager.rb: show loading configuration
	file path in debug verbose level. [#2921072]
	Suggested by Antuan Avdioukhine.

	* binding/ruby/lib/milter/manager.rb,
	binding/ruby/test/manager/test-configuration.rb: accept spaces
	around ',' and '=' in package options.

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

	* binding/ruby/test/manager/test-debian-init-detector.rb
	(TestDebianInitDetector#test_info): follow the Debian's init file
	change.

	* binding/ruby/lib/milter/manager/freebsd-rc-detector.rb
	(Milter::FreeBSDRCDetector#apply): add missing nil check.
	Reported by Tsuchiya. Thanks!!!

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

	* doc/users.rd.ja: add a user company. Thanks!!!

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

	* milter/manager/milter-manager-applicable-condition.[ch],
	test/manager/test-applicable-condition.c: support data.

	* test/lib/milter-manager-test-utils.c: use cut_message().

	* admin/app/models/configuration.rb (Configuration#sync): treat
	non last-modified means 'now'.

	* test/lib/milter-test-compatible.h: add for older Cutter support.
	* test/lib/: use milter-test-compatible.h.

	* admin/app/models/configuration.rb (Configuration#latest): check
	also updated_at for the same modified_at configurations.

	* test/: support Cutter 1.1.0.

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

	* milter/manager/milter-manager-controller-context.c: cleanup log
	message.

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

	* data/init.d/debian/default/milter-manager,
	doc/install-to-ubuntu.rd*, doc/install-to-debian.rd*: remove
	needless group change.
	Suggested by ZnZ. Thanks!!!

	* data/init.d/debian/milter-manager: remove needless $local_fs
	dependency.
	Suggested by ZnZ. Thanks!!!

	* data/init.d/debian/milter-manager: delay file system permission
	setup until start/stop/restart.
	Suggested by ZnZ. Thanks!!!

	* data/init.d/debian/milter-manager: support status.
	Suggested by ZnZ. Thanks!!!

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

	* TODO: add: [1.5.x] use UNIX domain socket rather than inet in
	document.
	Suggested by ZnZ.

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

	* doc/install-to-debian.rd*: milter-greylist on lenny doesn't have
	racl.
	Reported by ZnZ. Thanks!!!

	* README*: update ZnZ entry. Thanks!!!

	* milter/manager/milter-manager-main.c (switch_group): use
	initgroups() to ensure apply switched user's groups.
	Suggested by ZnZ. Thanks!!!

	* configure.ac: 1.4.1 -> 1.5.0.

	* NEWS*: add missing news and fix wrong place.

	* data/init.d/redhat/milter-manager (DAEMON_ARGS): always specify
	--daemon option.

	* milter-manager.spec.in: create pid file directory on post install.

	* configure.ac: create dummy binding/ruby/glib/Makefile for make dist.

	* NEWS: add 1.4.1 entry.

	* milter/manager/milter-manager-configuration.c, configure.ac: add
	--with-default-effective-user, --with-default-effective-group,
	--with-default-socket-group, --with-default-connection-spec and
	--with-default-pid-file options.

	* TODO: remove:
	- [1.5.x] add --with-default-user, --with-default-group,
	  --with-default-socket-group, --with-default-connection-spec and
	  --with-default-pidfile configure options.

	* binding/ruby/test/manager/: follow init scripts for Debian and
	CentOS changes.

	* NEWS*, README*: add znz to thanks list. Thanks!!!

2009-10-29  Kazuhiro NISHIYAMA <zn@mbf.nifty.com>

	* doc/install-to-debian.rd, doc/introduction.rd: fix typos.

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

	* html/index.html*: 1-4-0 -> 1-4-1.

	* NEWS.ja: add.

	* TODO: add:
	- [1.5.x] add --with-default-user, --with-default-group,
	  --with-default-socket-group, --with-default-connection-spec and
	  --with-default-pidfile configure options.

	* data/init.d/debian/milter-manager,
	data/init.d/debian/default/milter-manager: don't set default
	values in init script.

	* binding/ruby/glib/extconf.rb: ignore distdir target.

	* binding/ruby/src/toolkit/rb-milter.h (CSTR2RVAL_FREE): define if
	it's not defined.

	* doc/install-to-centos.rd*: CentOS 5.3 -> 5.4.

	* doc/install-to-centos.rd*, milter-manager.spec.in: use bundled
	Ruby/GLib2.

	* configure.ac, binding/ruby/Makefile.am: support bundled
	Ruby/GLib2.

	* configure.ac, binding/ruby/src/toolkit/Makefile.am,
	module/configuration/ruby/Makefile.am: separate Ruby related
	include path.

	* binding/ruby/glib/extconf.rb: make install paths customizable.

	* binding/ruby/glib/src/depend: backport from 0.19.3 and remove
	needless codes.

	* binding/ruby/glib/src/rbglib_unicode.c (rbglib_m_unichar_get_script),
	binding/ruby/glib/src/rbglib_maincontext.c (timeout_add_seconds),
	binding/ruby/glib/src/lib/glib-mkenums.rb: backport from 0.19.3.

	* binding/ruby/glib/: import for using fallback on CentOS.

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

	* doc/, html/, milter-manager.spec.in: update the latest release.

	* Makefile.am, configure.ac: use misc/update-latest-release.rb to
	update the latest release automatically.

	* binding/ruby/Makefile.am: update test-unit files.

	* configure.ac: 1.5.0 -> 1.4.1.

	* milter/manager/milter-manager-configuration.c
	(milter_manager_configuration_to_xml_string): time_t is always
	long int.

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

	* test/core/test-reader.c: fix overflow.

	* test/server/test-server-context-signals.c: fix overflow.

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

	* TODO: add:
	  * [1.5.x] multiply connection based anti-spam result as score.
	    e.g. SFP fail -> 2.3, S25R match -> 7.8, ...;
		 score = SPF fail * 0.3 + S25R match * 0.9 + ...
	               = 0.69 + 7.02 + ...;
		 threshold = 5;
		 score < threshold -> pass, score > threshold -> tarpit, ...
	  * [1.5.x] detete client connection disconnected by netstat for
	  tarpitting.

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

	* milter/server/milter-server-context.c,
	test/fixtures/leader/envelope-recipient-reject-evaluation.{txt,conf},
	test/fixtures/leader/envelope-recipient-reply-code-4xx-evaluation.{txt,conf},
	test/fixtures/leader/envelope-recipient-reply-code-5xx-evaluation.{txt,conf},
	test/manager/test-leader.c: fix a bug that temporary
	failed/rejected recipient isn't recorded on reply-code.

	* milter/manager/milter-manager-children.c,
	test/fixtures/leader/envelope-recipient-temporary-failure-evaluation.{txt,conf},
	test/manager/test-leader.c: abort milters that doesn't have
	available recipients on DATA.

	* milter/server/milter-server-context.c: emit message-processed
	signal on abort.

	* milter/server/milter-server-context.c,
	test/server/test-server-context.c: remove temporary
	failed/rejected recipients from recipients list.

	* test/lib/milter-manager-test-client.c
	(milter_manager_test_client_clear_data): fix a memory leak.

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

	* milter/server/milter-server-context.c,
	test/server/test-server-context.c: fix a bug accept on RCPT TO
	doesn't finish processing.

	* milter/server/milter-server-context.c,
	test/server/test-server-context.c: fix a bug discard on RCPT TO
	doesn't finish processing.

	* milter/server/milter-server-context.[ch],
	test/server/test-server-context.c: record temporary
	failed/rejected recipients.

	* milter/core/milter-message-result.[ch],
	test/core/test-message-result.c: add temporary failed/rejected
	recipients.

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

	* data/init.d/redhat/milter-manager: don't set command line
	options (USER, GROUP and so on) by default.
	Suggested by gorimaru. Thanks!!!

	* data/init.d/redhat/sysconfig/milter-manager: add PIDFILE.

2009-10-13  Yuto Hayamizu  <y.hayamizu@gmail.com>

	* doc/install-to-*.rd.ja: fixed typo

	* doc/configuration.rd*: fixed typo

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

	* html/blog/tdiary.conf: use section_footer2.rb instead of
	section_footer.rb.

	* doc/*-options-*debian.rd:* fix path.

	* configure.ac: 1.4.0 -> 1.5.0.

	* 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.
