Add optional idx for position of added header.

This commit is contained in:
Stuart Gathman
2005-10-20 23:04:49 +00:00
parent 3a1c964f0d
commit fcd85dbfb5
2 changed files with 12 additions and 6 deletions
+2 -2
View File
@@ -106,8 +106,8 @@ class Milter:
return self.__ctx.setreply(rcode,xcode,msg,*ml) return self.__ctx.setreply(rcode,xcode,msg,*ml)
# Milter methods which can only be called from eom callback. # Milter methods which can only be called from eom callback.
def addheader(self,field,value): def addheader(self,field,value,idx=-1):
return self.__ctx.addheader(field,value) return self.__ctx.addheader(field,value,idx)
def chgheader(self,field,idx,value): def chgheader(self,field,idx,value):
return self.__ctx.chgheader(field,idx,value) return self.__ctx.chgheader(field,idx,value)
+10 -4
View File
@@ -34,6 +34,9 @@ $ python setup.py help
libraries=["milter","smutil","resolv"] libraries=["milter","smutil","resolv"]
* $Log$ * $Log$
* Revision 1.6 2005/07/15 22:18:17 customdesigned
* Support callback exception policy
*
* Revision 1.5 2005/06/24 04:20:07 customdesigned * Revision 1.5 2005/06/24 04:20:07 customdesigned
* Report context allocation error. * Report context allocation error.
* *
@@ -967,28 +970,31 @@ milter_setreply(PyObject *self, PyObject *args) {
} }
static char milter_addheader__doc__[] = static char milter_addheader__doc__[] =
"addheader(field, value) -> None\n\ "addheader(field, value, idx=-1) -> None\n\
Add a header to the message. This header is not passed to other\n\ Add a header to the message. This header is not passed to other\n\
filters. It is not checked for standards compliance;\n\ filters. It is not checked for standards compliance;\n\
the mail filter must ensure that no protocols are violated\n\ the mail filter must ensure that no protocols are violated\n\
as a result of adding this header.\n\ as a result of adding this header.\n\
field - header field name\n\ field - header field name\n\
value - header field value\n\ value - header field value\n\
idx - optional position in internal header list to insert new header\n\
Both are strings. This function can only be called from the EOM callback."; Both are strings. This function can only be called from the EOM callback.";
static PyObject * static PyObject *
milter_addheader(PyObject *self, PyObject *args) { milter_addheader(PyObject *self, PyObject *args) {
char *headerf; char *headerf;
char *headerv; char *headerv;
int idx = -1;
SMFICTX *ctx; SMFICTX *ctx;
PyThreadState *t; PyThreadState *t;
if (!PyArg_ParseTuple(args, "ss:addheader", &headerf, &headerv)) return NULL; if (!PyArg_ParseTuple(args, "ss|i:addheader", &headerf, &headerv, &idx))
return NULL;
ctx = _find_context(self); ctx = _find_context(self);
if (ctx == NULL) return NULL; if (ctx == NULL) return NULL;
t = PyEval_SaveThread(); t = PyEval_SaveThread();
return _thread_return(t,smfi_addheader(ctx, headerf, headerv), return _thread_return(t, (idx < 0) ? smfi_addheader(ctx, headerf, headerv) :
"cannot add header"); smfi_insheader(ctx, idx, headerf, headerv), "cannot add header");
} }
static char milter_chgheader__doc__[] = static char milter_chgheader__doc__[] =