一。ProcessBodyLine
SMTPParse-> SMTPProcessRequest-> SMTPProcessCommandDATA-> MimeDecParseLine-> ProcessMimeEntity-> ProcessMimeBody->ProcessBodyLine
该函数处理body数据, 根据头部字段设置编码标志对数据进行解码,base64,quote-prntable。
如果数据未编码则不需要解码,解码后将数据存储到mime_state->data_chunk中,如果没有存储空间则调用ProcessDecodedDataChunk函数对数据进行处理,其中主要是获取每行数据从中提取url并保存,之后并调用函数指针state->DataChunkProcessorFunc,该函数指针是在函数SMTPProcessRequest中创建(MimeDecParseState)mime_state时进行的初始化,提供自定义处理功能。
static int ProcessBodyLine(const uint8_t *buf, uint32_t len,
MimeDecParseState *state)
{
int ret = MIME_DEC_OK;
uint32_t remaining, offset, avail, tobuf;
//获取当前信件体的指针
MimeDecEntity *entity = (MimeDecEntity *) state->stack->top->data;
SCLogDebug("Processing body line");
/* Track length */
entity->body_len += len + 2; /* With CRLF */