<HTML> <HEAD><TITLE>xxfi_body</TITLE></HEAD> <BODY> <!-- $Id: xxfi_body.html,v 1.18 2013-11-22 20:51:39 ca Exp $ --> <H1>xxfi_body</H1> <TABLE border="0" cellspacing=4 cellpadding=4> <!---------- Synopsis -----------> <TR><TH valign="top" align=left width=100>SYNOPSIS</TH><TD> <PRE> #include <libmilter/mfapi.h> sfsistat (*xxfi_body)( SMFICTX *ctx, unsigned char *bodyp, size_t len ); </PRE> Handle a piece of a message's body. </TD></TR> <!----------- Description ----------> <TR><TH valign="top" align=left>DESCRIPTION</TH><TD> <TABLE border="1" cellspacing=1 cellpadding=4> <TR align="left" valign=top> <TH width="80">Called When</TH> <TD>xxfi_body is called zero or more times between xxfi_eoh and xxfi_eom.</TD> </TR> <TR align="left" valign=top> <TH>Default Behavior</TH> <TD>Do nothing; return SMFIS_CONTINUE.</TD> </TR> </TABLE> </TD></TR> <!----------- Arguments ----------> <TR><TH valign="top" align=left>ARGUMENTS</TH><TD> <TABLE border="1" cellspacing=0> <TR bgcolor="#dddddd"><TH>Argument</TH><TH>Description</TH></TR> <TR valign="top"><TD>ctx</TD> <TD>Opaque context structure. </TD></TR> <TR valign="top"><TD>bodyp</TD> <TD>Pointer to the start of this block of body data. bodyp is not valid outside this call to xxfi_body. </TD></TR> <TR valign="top"><TD>len</TD> <TD>The amount of data pointed to by bodyp. </TD></TR> </TABLE> </TD></TR> <!----------- Notes ----------> <TR> <TH valign="top" align=left>NOTES</TH> <TD> <UL> <LI>bodyp points to a sequence of bytes. It is <EM>not</EM> a C string (a sequence of characters that is terminated by '\0'). Therefore, do not use the usual C string functions like <CODE>strlen(3)</CODE> 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. <LI>Since message bodies can be very large, defining xxfi_body can significantly impact filter performance. <LI>End-of-lines are represented as received from SMTP (normally CR/LF). <LI>Later filters will see body changes made by earlier ones. <LI>Message bodies may be sent in multiple chunks, with one call to xxfi_body per chunk. <LI>Return <A HREF="api.html#SMFIS_SKIP">SMFIS_SKIP</A> 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 <A HREF="xxfi_eom.html">xxfi_eom()</A>. Note: the milter <EM>must</EM> <A HREF="xxfi_negotiate.html">negotiate</A> this behavior with the MTA, i.e., it must check whether the protocol action <A HREF="xxfi_negotiate.html#SMFIP_SKIP"><CODE>SMFIP_SKIP</CODE></A> is available and if so, the milter must request it. </UL> </TD> </TR> </TABLE> <HR size="1"> <FONT size="-1"> Copyright (c) 2000-2003, 2007 Proofpoint, Inc. and its suppliers. All rights reserved. <BR> By using this file, you agree to the terms and conditions set forth in the LICENSE. </FONT> </BODY> </HTML> |