Skip to content
Snippets Groups Projects
Commit 4251fbc1 authored by Stuart D. Gathman's avatar Stuart D. Gathman
Browse files

Work in python2 and python3

parent 4749f0ff
Branches
Tags
No related merge requests found
......@@ -14,6 +14,7 @@ __version__ = '1.0.4'
import os
import re
import milter
import sys
try:
import thread
except:
......@@ -773,7 +774,10 @@ def runmilter(name,socketname,timeout = 0,rmsock=True):
# dictfromlist to make parsing the ESMTP args convenient.
milter.set_envfrom_callback(lambda ctx,*str: ctx.getpriv().envfrom(*str))
milter.set_envrcpt_callback(lambda ctx,*str: ctx.getpriv().envrcpt(*str))
milter.set_header_callback(lambda ctx,fld,val: ctx.getpriv().header(fld,val))
if sys.version < '3.0.0':
milter.set_header_callback(lambda ctx,f,v: ctx.getpriv().header(f,v))
else:
milter.set_header_callback(header_callback)
milter.set_eoh_callback(lambda ctx: ctx.getpriv().eoh())
milter.set_body_callback(lambda ctx,chunk: ctx.getpriv().body(chunk))
milter.set_eom_callback(lambda ctx: ctx.getpriv().eom())
......
......@@ -6,6 +6,7 @@
from __future__ import print_function
from socket import AF_INET,AF_INET6
from sys import version as VERSION
import time
import mime
try:
......@@ -14,8 +15,6 @@ except:
from StringIO import StringIO as BytesIO
import Milter
from Milter import utils
import mime
import email
## Milter context for unit testing %milter applications.
# A substitute for milter.milterContext that can be passed to
......@@ -220,6 +219,8 @@ class TestCtx(object):
return rc
def _header(self,fld,val):
if VERSION < '3.0.0':
return self._priv.header(fld,val)
# email.message_from_binary_file uses surrogateescape to
# preserve original bytes in unicode string for decoding errors.
# convert str or Header back to original bytes
......
......@@ -674,7 +674,11 @@ milter_wrap_header(SMFICTX *ctx, char *headerf, char *headerv) {
if (header_callback == NULL) return SMFIS_CONTINUE;
c = _get_context(ctx);
if (!c) return SMFIS_TEMPFAIL;
arglist = Py_BuildValue("(Oyy)", c, headerf, headerv);
#if PY_MAJOR_VERSION >= 3
arglist = Py_BuildValue("(Osy)", c, headerf, headerv);
#else
arglist = Py_BuildValue("(Oss)", c, headerf, headerv);
#endif
return _generic_wrapper(c, header_callback, arglist);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment