/* * Add a packet to the io vector. Return the number of bytes added to the vector. */ static void addPacketForSend(MaQueue *q, MaPacket *packet) { MaResponse *resp; MaConn *conn; MprIOVec *iovec; int mask; conn = q->conn; resp = conn->response; iovec = q->iovec; mprAssert(q->count >= 0); mprAssert(q->ioIndex < (MA_MAX_IOVEC - 2)); if (packet->prefix) { addToSendVector(q, mprGetBufStart(packet->prefix), mprGetBufLength(packet->prefix)); } if (packet->esize > 0) { mprAssert(q->ioFile == 0); q->ioFile = 1; q->ioCount += packet->esize; } else if (maGetPacketLength(packet) > 0) { /* * Header packets have actual content. File data packets are virtual and only have a count. */ addToSendVector(q, mprGetBufStart(packet->content), mprGetBufLength(packet->content)); mask = (packet->flags & MA_PACKET_HEADER) ? MA_TRACE_HEADERS : MA_TRACE_BODY; if (maShouldTrace(conn, mask)) { maTraceContent(conn, packet, 0, resp->bytesWritten, mask); } } }
/* Add a packet to the io vector. Return the number of bytes added to the vector. */ static void addPacketForSend(HttpQueue *q, HttpPacket *packet) { HttpConn *conn; conn = q->conn; assert(q->count >= 0); assert(q->ioIndex < (ME_MAX_IOVEC - 2)); if (packet->prefix) { addToSendVector(q, mprGetBufStart(packet->prefix), mprGetBufLength(packet->prefix)); } if (packet->esize > 0) { assert(q->ioFile == 0); q->ioFile = 1; q->ioCount += packet->esize; } else if (httpGetPacketLength(packet) > 0) { /* Header packets have actual content. File data packets are virtual and only have a count. */ addToSendVector(q, mprGetBufStart(packet->content), httpGetPacketLength(packet)); if (httpTracing(conn) && packet->flags & HTTP_PACKET_DATA) { httpTraceBody(conn, 1, packet, -1); } } }