diff --git a/ChangeLog b/ChangeLog
index 8e7bf3b6bf68703a7b0431ab8d0ae5ad56f98f07..be2f90a8f60d9bf4c47e1f7c72503ec627bb8527 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,213 @@
+# Revision 1.35 2013/03/14 22:11:25 customdesigned
+# Release 0.9.8
+#
+# Revision 1.34 2013/03/09 05:42:14 customdesigned
+# Make TestBase members private, fix getsymlist misspelling.
+#
+# Revision 1.33 2013/03/09 00:25:23 customdesigned
+# Better untrapped exception message. const char for doc comments.
+#
+# Revision 1.32 2013/01/13 01:46:16 customdesigned
+# Doc updates.
+#
+# Revision 1.31 2012/04/12 23:32:50 customdesigned
+# Replace redundant callback array with macros. If this doesn't break anything,
+# macros can be eliminated with code changes.
+#
+# Revision 1.30 2012/04/12 23:08:06 customdesigned
+# Support RFC2553 on BSD
+#
+# Revision 1.29 2011/06/09 15:45:27 customdesigned
+# Print callback name for non-int return error.
+#
+# Revision 1.28 2011/06/08 23:13:48 customdesigned
+# Generate special exception when callback return not int.
+#
+# Revision 1.27 2009/07/28 21:45:54 customdesigned
+# Add getversion() to return runtime version.
+#
+# Revision 1.26 2009/07/28 21:08:20 customdesigned
+# Increment del count.
+#
+# Revision 1.25 2009/07/28 20:58:55 customdesigned
+# getdiag method
+#
+# Revision 1.24 2009/06/09 01:54:44 customdesigned
+# Forgot to initialize optional parameter.
+#
+# Revision 1.23 2009/05/29 20:44:58 customdesigned
+# Typo SMFIP_NO constants.
+#
+# Revision 1.22 2009/05/29 19:53:36 customdesigned
+# Typo SMFIS_ALL_OPTS
+#
+# Revision 1.21 2009/05/29 19:49:40 customdesigned
+# Typo calling helo instead of negotiate.
+#
+# Revision 1.20 2009/05/29 18:25:59 customdesigned
+# Null terminate keyword list.
+#
+# Revision 1.19 2009/05/28 18:36:42 customdesigned
+# Support new callbacks, including negotiate
+#
+# Revision 1.18 2009/05/21 21:53:05 customdesigned
+# First cut at support unknown, data, negotiate callbacks.
+#
+# Revision 1.17 2009/02/06 04:28:08 customdesigned
+# Oops! Missing options argument pointer for addrcpt.
+#
+# Revision 1.16 2008/12/16 04:21:05 customdesigned
+# Fedora release
+#
+# Revision 1.15 2008/12/13 20:29:56 customdesigned
+# Split off milter applications.
+#
+# Revision 1.14 2008/12/04 19:43:00 customdesigned
+# Doc updates.
+#
+# Revision 1.13 2008/11/23 03:06:47 customdesigned
+# Milter support for chgfrom.
+#
+# Revision 1.12 2008/11/21 20:42:52 customdesigned
+# Support smfi_chgfrom and smfi_addrcpt_par.
+#
+# Revision 1.11 2007/09/25 02:26:29 customdesigned
+# Update license.
+#
+# Revision 1.10 2006/02/12 02:00:42 customdesigned
+# Resolve FIXME for wrap_close.
+#
+# Revision 1.9 2005/12/23 21:46:36 customdesigned
+# Compile on sendmail-8.12 (ifdef SMFIR_INSHEADER)
+#
+# Revision 1.8 2005/10/20 23:23:36 customdesigned
+# Include smfi_progress is SMFIR_PROGRESS defined
+#
+# Revision 1.7 2005/10/20 23:04:46 customdesigned
+# Add optional idx for position of added header.
+#
+# Revision 1.6 2005/07/15 22:18:17 customdesigned
+# Support callback exception policy
+#
+# Revision 1.5 2005/06/24 04:20:07 customdesigned
+# Report context allocation error.
+#
+# Revision 1.4 2005/06/24 04:12:43 customdesigned
+# Remove unused name argument to generic wrappers.
+#
+# Revision 1.3 2005/06/24 03:57:35 customdesigned
+# Handle close called before connect.
+#
+# Revision 1.2 2005/06/02 04:18:55 customdesigned
+# Update copyright notices after reading article on /.
+#
+# Revision 1.1.1.2 2005/05/31 18:09:06 customdesigned
+# Release 0.7.1
+#
+# Revision 2.31 2004/08/23 02:24:36 stuart
+# Support setbacklog
+#
+# Revision 2.30 2004/08/21 20:29:53 stuart
+# Support option of 11 lines max for mlreply.
+#
+# Revision 2.29 2004/08/21 04:14:29 stuart
+# mlreply support
+#
+# Revision 2.28 2004/08/21 02:45:21 stuart
+# Don't leak int constants if module unloaded.
+#
+# Revision 2.27 2004/04/06 03:19:59 stuart
+# Release 0.6.8
+#
+# Revision 2.26 2004/03/04 21:43:06 stuart
+# Fix memory leak by removing unused dynamic template buffer,
+# thanks again to Alexander Kourakos.
+#
+# Revision 2.25 2004/03/01 19:45:03 stuart
+# Release 0.6.5
+#
+# Revision 2.24 2004/03/01 18:56:50 stuart
+# Support progress reporting.
+#
+# Revision 2.23 2004/03/01 18:36:09 stuart
+# Plug memory leak. Thanks to Alexander Kourakos.
+#
+# Revision 2.22 2003/11/02 03:01:46 stuart
+# Adjust SMTP error codes after careful reading of standard.
+#
+# Revision 2.21 2003/06/24 19:57:04 stuart
+# Allow removing a python milter callback by setting to None.
+#
+# Revision 2.20 2003/02/13 17:08:57 stuart
+# IPV6 support
+#
+# Revision 2.19 2003/02/13 16:58:29 stuart
+# Support passing None to setreply and chgheader.
+#
+# Revision 2.18 2002/12/11 16:44:06 stuart
+# Support QUARANTINE if supported by libmilter.
+#
+# Revision 2.17 2002/04/18 20:20:35 stuart
+# Fix for NULL hostaddr in connect callback from Jason Erickson.
+#
+# Revision 2.16 2001/09/26 13:29:09 stuart
+# sa_len not supported by linux.
+#
+# Revision 2.15 2001/09/25 17:28:40 stuart
+# Copyrights, documentation, release 0.3.1
+#
+# Revision 2.14 2001/09/25 00:36:57 stuart
+# Pass hostaddr to python code in format used by standard socket module.
+#
+# Revision 2.13 2001/09/24 23:44:55 stuart
+# Return old callback from setcallback functions.
+#
+# Revision 2.12 2001/09/24 20:02:30 stuart
+# Remove redundant setpriv
+#
+# Revision 2.11 2001/09/23 22:26:35 stuart
+# Update docs. Streamline Milter.py
+# update testbms.py to reflect actual sendmail behaviour with multiple
+# messages per connection.
+#
+# Revision 2.10 2001/09/22 15:33:42 stuart
+# More doc comment updates.
+#
+# Revision 2.9 2001/09/22 14:52:27 stuart
+# Actually return retval in _generic_return.
+# Go over doc comments.
+#
+# Revision 2.8 2001/09/22 01:59:32 stuart
+# Prevent reentrant call of milter_main, which libmilter doesn't support.
+#
+# Revision 2.7 2001/09/22 01:47:37 stuart
+# Forgot to set milter interp.
+#
+# Revision 2.6 2001/09/22 01:23:53 stuart
+# Added proper threading after research in python docs.
+#
+# Revision 2.5 2001/09/21 20:08:51 stuart
+# Release 0.2.3
+#
+# Revision 2.4 2001/09/20 16:18:16 stuart
+# libmilter checks in_eom state, so we don't have to.
+#
+# Revision 2.3 2001/09/19 06:02:33 stuart
+# Make more stuff static.
+#
+# Revision 2.1 2001/09/19 04:24:13 stuart
+# Use extension type to track context in python.
+#
+# Revision 1.4 2001/09/18 18:48:28 stuart
+# clear private data reference in _clear_context
+#
+# Revision 1.3 2001/09/15 04:19:37 stuart
+# nasty off by 1 mem overwrite bugs in wrap_env
+# generic_set_callback
+#
+# Revision 1.2 2001/09/15 03:15:39 stuart
+# several bugs fixed, works smoothly
+#
# Revision 1.69 2006/11/04 22:09:39 customdesigned
# Another lame DSN heuristic. Block PTR cache poisoning attack.
#
diff --git a/miltermodule.c b/miltermodule.c
index 3700d0fd859cfefe57233b438acc5e4dfb3317d3..b77bb7ddd24279b3bc35dd3e221e217c35d05453 100644
--- a/miltermodule.c
+++ b/miltermodule.c
@@ -34,217 +34,6 @@ $ python setup.py help
libraries=["milter","smutil","resolv"]
- * $Log$
- * Revision 1.35 2013/03/14 22:11:25 customdesigned
- * Release 0.9.8
- *
- * Revision 1.34 2013/03/09 05:42:14 customdesigned
- * Make TestBase members private, fix getsymlist misspelling.
- *
- * Revision 1.33 2013/03/09 00:25:23 customdesigned
- * Better untrapped exception message. const char for doc comments.
- *
- * Revision 1.32 2013/01/13 01:46:16 customdesigned
- * Doc updates.
- *
- * Revision 1.31 2012/04/12 23:32:50 customdesigned
- * Replace redundant callback array with macros. If this doesn't break anything,
- * macros can be eliminated with code changes.
- *
- * Revision 1.30 2012/04/12 23:08:06 customdesigned
- * Support RFC2553 on BSD
- *
- * Revision 1.29 2011/06/09 15:45:27 customdesigned
- * Print callback name for non-int return error.
- *
- * Revision 1.28 2011/06/08 23:13:48 customdesigned
- * Generate special exception when callback return not int.
- *
- * Revision 1.27 2009/07/28 21:45:54 customdesigned
- * Add getversion() to return runtime version.
- *
- * Revision 1.26 2009/07/28 21:08:20 customdesigned
- * Increment del count.
- *
- * Revision 1.25 2009/07/28 20:58:55 customdesigned
- * getdiag method
- *
- * Revision 1.24 2009/06/09 01:54:44 customdesigned
- * Forgot to initialize optional parameter.
- *
- * Revision 1.23 2009/05/29 20:44:58 customdesigned
- * Typo SMFIP_NO constants.
- *
- * Revision 1.22 2009/05/29 19:53:36 customdesigned
- * Typo SMFIS_ALL_OPTS
- *
- * Revision 1.21 2009/05/29 19:49:40 customdesigned
- * Typo calling helo instead of negotiate.
- *
- * Revision 1.20 2009/05/29 18:25:59 customdesigned
- * Null terminate keyword list.
- *
- * Revision 1.19 2009/05/28 18:36:42 customdesigned
- * Support new callbacks, including negotiate
- *
- * Revision 1.18 2009/05/21 21:53:05 customdesigned
- * First cut at support unknown, data, negotiate callbacks.
- *
- * Revision 1.17 2009/02/06 04:28:08 customdesigned
- * Oops! Missing options argument pointer for addrcpt.
- *
- * Revision 1.16 2008/12/16 04:21:05 customdesigned
- * Fedora release
- *
- * Revision 1.15 2008/12/13 20:29:56 customdesigned
- * Split off milter applications.
- *
- * Revision 1.14 2008/12/04 19:43:00 customdesigned
- * Doc updates.
- *
- * Revision 1.13 2008/11/23 03:06:47 customdesigned
- * Milter support for chgfrom.
- *
- * Revision 1.12 2008/11/21 20:42:52 customdesigned
- * Support smfi_chgfrom and smfi_addrcpt_par.
- *
- * Revision 1.11 2007/09/25 02:26:29 customdesigned
- * Update license.
- *
- * Revision 1.10 2006/02/12 02:00:42 customdesigned
- * Resolve FIXME for wrap_close.
- *
- * Revision 1.9 2005/12/23 21:46:36 customdesigned
- * Compile on sendmail-8.12 (ifdef SMFIR_INSHEADER)
- *
- * Revision 1.8 2005/10/20 23:23:36 customdesigned
- * Include smfi_progress is SMFIR_PROGRESS defined
- *
- * Revision 1.7 2005/10/20 23:04:46 customdesigned
- * Add optional idx for position of added header.
- *
- * Revision 1.6 2005/07/15 22:18:17 customdesigned
- * Support callback exception policy
- *
- * Revision 1.5 2005/06/24 04:20:07 customdesigned
- * Report context allocation error.
- *
- * Revision 1.4 2005/06/24 04:12:43 customdesigned
- * Remove unused name argument to generic wrappers.
- *
- * Revision 1.3 2005/06/24 03:57:35 customdesigned
- * Handle close called before connect.
- *
- * Revision 1.2 2005/06/02 04:18:55 customdesigned
- * Update copyright notices after reading article on /.
- *
- * Revision 1.1.1.2 2005/05/31 18:09:06 customdesigned
- * Release 0.7.1
- *
- * Revision 2.31 2004/08/23 02:24:36 stuart
- * Support setbacklog
- *
- * Revision 2.30 2004/08/21 20:29:53 stuart
- * Support option of 11 lines max for mlreply.
- *
- * Revision 2.29 2004/08/21 04:14:29 stuart
- * mlreply support
- *
- * Revision 2.28 2004/08/21 02:45:21 stuart
- * Don't leak int constants if module unloaded.
- *
- * Revision 2.27 2004/04/06 03:19:59 stuart
- * Release 0.6.8
- *
- * Revision 2.26 2004/03/04 21:43:06 stuart
- * Fix memory leak by removing unused dynamic template buffer,
- * thanks again to Alexander Kourakos.
- *
- * Revision 2.25 2004/03/01 19:45:03 stuart
- * Release 0.6.5
- *
- * Revision 2.24 2004/03/01 18:56:50 stuart
- * Support progress reporting.
- *
- * Revision 2.23 2004/03/01 18:36:09 stuart
- * Plug memory leak. Thanks to Alexander Kourakos.
- *
- * Revision 2.22 2003/11/02 03:01:46 stuart
- * Adjust SMTP error codes after careful reading of standard.
- *
- * Revision 2.21 2003/06/24 19:57:04 stuart
- * Allow removing a python milter callback by setting to None.
- *
- * Revision 2.20 2003/02/13 17:08:57 stuart
- * IPV6 support
- *
- * Revision 2.19 2003/02/13 16:58:29 stuart
- * Support passing None to setreply and chgheader.
- *
- * Revision 2.18 2002/12/11 16:44:06 stuart
- * Support QUARANTINE if supported by libmilter.
- *
- * Revision 2.17 2002/04/18 20:20:35 stuart
- * Fix for NULL hostaddr in connect callback from Jason Erickson.
- *
- * Revision 2.16 2001/09/26 13:29:09 stuart
- * sa_len not supported by linux.
- *
- * Revision 2.15 2001/09/25 17:28:40 stuart
- * Copyrights, documentation, release 0.3.1
- *
- * Revision 2.14 2001/09/25 00:36:57 stuart
- * Pass hostaddr to python code in format used by standard socket module.
- *
- * Revision 2.13 2001/09/24 23:44:55 stuart
- * Return old callback from setcallback functions.
- *
- * Revision 2.12 2001/09/24 20:02:30 stuart
- * Remove redundant setpriv
- *
- * Revision 2.11 2001/09/23 22:26:35 stuart
- * Update docs. Streamline Milter.py
- * update testbms.py to reflect actual sendmail behaviour with multiple
- * messages per connection.
- *
- * Revision 2.10 2001/09/22 15:33:42 stuart
- * More doc comment updates.
- *
- * Revision 2.9 2001/09/22 14:52:27 stuart
- * Actually return retval in _generic_return.
- * Go over doc comments.
- *
- * Revision 2.8 2001/09/22 01:59:32 stuart
- * Prevent reentrant call of milter_main, which libmilter doesn't support.
- *
- * Revision 2.7 2001/09/22 01:47:37 stuart
- * Forgot to set milter interp.
- *
- * Revision 2.6 2001/09/22 01:23:53 stuart
- * Added proper threading after research in python docs.
- *
- * Revision 2.5 2001/09/21 20:08:51 stuart
- * Release 0.2.3
- *
- * Revision 2.4 2001/09/20 16:18:16 stuart
- * libmilter checks in_eom state, so we don't have to.
- *
- * Revision 2.3 2001/09/19 06:02:33 stuart
- * Make more stuff static.
- *
- * Revision 2.1 2001/09/19 04:24:13 stuart
- * Use extension type to track context in python.
- *
- * Revision 1.4 2001/09/18 18:48:28 stuart
- * clear private data reference in _clear_context
- *
- * Revision 1.3 2001/09/15 04:19:37 stuart
- * nasty off by 1 mem overwrite bugs in wrap_env
- * generic_set_callback
- *
- * Revision 1.2 2001/09/15 03:15:39 stuart
- * several bugs fixed, works smoothly
- *
*/
#ifndef MAX_ML_REPLY
@@ -1693,10 +1482,15 @@ See <sendmailsource>/libmilter/README for details on setting it up.\n";
static void setitem(PyObject *d,const char *name,long val) {
#if PY_MAJOR_VERSION >= 3
PyObject *v = PyLong_FromLong(val);
+#else
+ PyObject *v = PyInt_FromLong(val);
+#endif
PyDict_SetItemString(d,name,v);
Py_DECREF(v);
}
+#if PY_MAJOR_VERSION >= 3
+
static struct PyModuleDef moduledef = {
PyModuleDef_HEAD_INIT,
"milter", /* m_name */
@@ -1718,13 +1512,8 @@ PyMODINIT_FUNC PyInit_milter(void) {
m = PyModule_Create(&moduledef);
if (m == NULL) return NULL;
#else
- PyObject *v = PyInt_FromLong(val);
- PyDict_SetItemString(d,name,v);
- Py_DECREF(v);
-}
-void
-initmilter(void) {
+void initmilter(void) {
PyObject *m, *d;
m = Py_InitModule4("milter", milter_methods, milter_documentation,