SYNOPSIS |
#include <libmilter/mfapi.h>
int smfi_replacebody(
SMFICTX *ctx,
unsigned char *bodyp,
int bodylen
);
Replace message-body data.
|
DESCRIPTION |
Called When |
Called only from xxfi_eom. smfi_replacebody may be called more than once. |
Effects |
smfi_replacebody replaces the body of the current message. If called
more than once, subsequent calls result in data being appended to the new
body.
|
|
ARGUMENTS |
Argument | Description |
ctx |
Opaque context structure.
|
bodyp |
A pointer to the start of the new body data, which does not have to be null-terminated. If bodyp is NULL, it is treated as having length == 0. Body data should be in CR/LF form.
|
bodylen |
The number of data bytes pointed to by bodyp.
|
|
RETURN VALUES |
smfi_replacebody fails and returns MI_FAILURE if:
- bodyp == NULL and bodylen > 0.
- Changing the body in the current connection state is invalid.
- A network error occurs.
- SMFIF_CHGBODY is not set.
Otherwise, it will return MI_SUCCESS.
|
NOTES |
- Since the message body may be very large, calling smfi_replacebody may significantly affect filter performance.
- If a filter sets SMFIF_CHGBODY but does not call smfi_replacebody, the original body remains unchanged.
- For smfi_replacebody, filter order is important. Later filters will see the new body contents created by earlier ones.
- A filter which calls smfi_replacebody must have set the
SMFIF_CHGBODY flag.
|