# xxfi_body

SYNOPSIS |
    #include <libmilter/mfapi.h>
    sfsistat (*xxfi_body)(
    	SMFICTX *ctx,
    	unsigned char *bodyp,
    	size_t len
    );
Handle a piece of a message's body.
DESCRIPTION |
Called When | xxfi_body is called zero or more times between xxfi_eoh and xxfi_eom.
Default Behavior | Do nothing; return SMFIS_CONTINUE.
ARGUMENTS |
Argument | Description
--- | ---
ctx | Opaque context structure.
bodyp | Pointer to the start of this block of body data. bodyp is not valid outside this call to xxfi_body.
len | The amount of data pointed to by bodyp.
NOTES | bodyp points to a sequence of bytes. It is not a C string (a sequence of characters that is terminated by '\0'). Therefore, do not use the usual C string functions like `strlen(3)` on this byte block. Moreover, the byte sequence may contain '\0' characters inside the block. Hence even if a trailing '\0' is added, C string functions may still fail to work as expected. Since message bodies can be very large, defining xxfi_body can significantly impact filter performance. End-of-lines are represented as received from SMTP (normally CRLF). Later filters will see body changes made by earlier ones. Message bodies may be sent in multiple chunks, with one call to xxfi_body per chunk. Return SMFIS_SKIP if a milter has received sufficiently many body chunks to make a decision, but still wants to invoke message modification functions that are only allowed to be called from xxfi_eom(). Note: the milter must negotiate this behavior with the MTA, i.e., it must check whether the protocol action `SMFIP_SKIP` is available and if so, the milter must request it.

Copyright (c) 2000-2003, 2007 Proofpoint, Inc. and its suppliers. All rights reserved.
By using this file, you agree to the terms and conditions set forth in the LICENSE.