From: Vlad S. <ser...@us...> - 2005-07-08 16:24:27
|
Update of /cvsroot/naviserver/naviserver/nsd In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7852/nsd Modified Files: fastpath.c Log Message: using iovec buffers from stack instead of allocating them, size is not that big and memory fragmentation will cost more Index: fastpath.c =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsd/fastpath.c,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** fastpath.c 8 Jul 2005 15:38:27 -0000 1.13 --- fastpath.c 8 Jul 2005 16:24:17 -0000 1.14 *************** *** 855,859 **** ReturnRange(Ns_Conn *conn, Range *rnPtr, int fd, char *data, int len, char *type) { ! struct iovec buf, *bufs = 0, *iovPtr = &buf; int i,result = NS_ERROR; char boundary[32]; --- 855,859 ---- ReturnRange(Ns_Conn *conn, Range *rnPtr, int fd, char *data, int len, char *type) { ! struct iovec bufs[MAX_RANGES*3], *iovPtr = bufs; int i,result = NS_ERROR; char boundary[32]; *************** *** 869,875 **** Ns_ConnSetRequiredHeaders(conn, type, len); Ns_ConnQueueHeaders(conn, rnPtr->status); ! buf.iov_base = data; ! buf.iov_len = len; ! result = Ns_ConnSend(conn, &buf, 1); break; --- 869,875 ---- Ns_ConnSetRequiredHeaders(conn, type, len); Ns_ConnQueueHeaders(conn, rnPtr->status); ! bufs[0].iov_base = data; ! bufs[0].iov_len = len; ! result = Ns_ConnSend(conn, bufs, 1); break; *************** *** 888,894 **** Ns_ConnSetRequiredHeaders(conn, type, rnPtr->offsets[0].size); Ns_ConnQueueHeaders(conn, rnPtr->status); ! buf.iov_base = data + rnPtr->offsets[0].start; ! buf.iov_len = rnPtr->offsets[0].size; ! result = Ns_ConnSend(conn, &buf, 1); break; --- 888,894 ---- Ns_ConnSetRequiredHeaders(conn, type, rnPtr->offsets[0].size); Ns_ConnQueueHeaders(conn, rnPtr->status); ! bufs[0].iov_base = data + rnPtr->offsets[0].start; ! bufs[0].iov_len = rnPtr->offsets[0].size; ! result = Ns_ConnSend(conn, bufs, 1); break; *************** *** 911,917 **** */ - if (fd == -1) { - bufs = ns_malloc(sizeof(struct iovec) * rnPtr->count * 3); - } for (i = 0;i < rnPtr->count;i++) { if (fd == -1) { --- 911,914 ---- *************** *** 965,969 **** } Ns_DStringFree(&ds); - ns_free(bufs); break; } --- 962,965 ---- |