From: Vlad S. <ser...@us...> - 2007-10-23 18:43:12
|
Update of /cvsroot/naviserver/naviserver/nsd In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv21645/nsd Modified Files: driver.c nsd.h progress.c Log Message: * nsd/driver.c: * nsd/progress.c: * nsd/nsd.h: Added support for uploads larger than 2GB, length fields are Tcl_WideInt now, printf output modifiers updated Index: driver.c =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsd/driver.c,v retrieving revision 1.93 retrieving revision 1.94 diff -C2 -d -r1.93 -r1.94 *** driver.c 19 Oct 2007 21:56:00 -0000 1.93 --- driver.c 23 Oct 2007 18:43:12 -0000 1.94 *************** *** 299,304 **** drvPtr->servPtr = servPtr; ! drvPtr->maxinput = Ns_ConfigIntRange(path, "maxinput", ! 1024*1024, 1024, INT_MAX); drvPtr->maxline = Ns_ConfigIntRange(path, "maxline", --- 299,304 ---- drvPtr->servPtr = servPtr; ! drvPtr->maxinput = Ns_ConfigWideIntRange(path, "maxinput", ! 1024*1024, 1024, LLONG_MAX); drvPtr->maxline = Ns_ConfigIntRange(path, "maxline", *************** *** 1965,1969 **** struct iovec buf; char tbuf[4096]; ! int len, nread, n; /* --- 1965,1969 ---- struct iovec buf; char tbuf[4096]; ! Tcl_WideInt len, nread, n; /* *************** *** 2062,2066 **** */ ! if (reqPtr->avail > sockPtr->drvPtr->maxinput) { return SOCK_ENTITYTOOLARGE; } --- 2062,2067 ---- */ ! if (reqPtr->avail > drvPtr->maxinput) { ! Ns_Log(Debug, "request too large, read=%" TCL_LL_MODIFIER "d, maxinput=%" TCL_LL_MODIFIER "d", reqPtr->avail, drvPtr->maxinput); return SOCK_ENTITYTOOLARGE; } *************** *** 2176,2180 **** s = Ns_SetIGet(reqPtr->headers, "content-length"); if (s != NULL) { ! int length; /* --- 2177,2181 ---- s = Ns_SetIGet(reqPtr->headers, "content-length"); if (s != NULL) { ! Tcl_WideInt length; /* *************** *** 2183,2190 **** */ ! length = atoi(s); ! if (length >= 0) { reqPtr->length = length; if (reqPtr->length > drvPtr->maxinput) { return SOCK_ENTITYTOOLARGE; } --- 2184,2191 ---- */ ! if (Ns_StrToWideInt(s, &length) == NS_OK && length > 0) { reqPtr->length = length; if (reqPtr->length > drvPtr->maxinput) { + Ns_Log(Debug, "request too large, length=%" TCL_LL_MODIFIER "d, maxinput=%" TCL_LL_MODIFIER "d", reqPtr->length, drvPtr->maxinput); return SOCK_ENTITYTOOLARGE; } *************** *** 2485,2489 **** Ns_MutexUnlock(&drvPtr->spooler.lock); ! Ns_Log(Notice, "Spooler: %d: started fd=%d: %u bytes", queuePtr->id, sockPtr->sock, sockPtr->reqPtr->length); --- 2486,2490 ---- Ns_MutexUnlock(&drvPtr->spooler.lock); ! Ns_Log(Notice, "Spooler: %d: started fd=%d: %" TCL_LL_MODIFIER "d bytes", queuePtr->id, sockPtr->sock, sockPtr->reqPtr->length); Index: nsd.h =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsd/nsd.h,v retrieving revision 1.107 retrieving revision 1.108 diff -C2 -d -r1.107 -r1.108 *** nsd.h 14 Oct 2007 13:04:58 -0000 1.107 --- nsd.h 23 Oct 2007 18:43:13 -0000 1.108 *************** *** 409,414 **** char *next; /* Next read offset. */ char *content; /* Start of content. */ ! int length; /* Length of content. */ ! int avail; /* Bytes avail in buffer. */ int leadblanks; /* Number of leading blank lines read */ --- 409,414 ---- char *next; /* Next read offset. */ char *content; /* Start of content. */ ! Tcl_WideInt length; /* Length of content. */ ! Tcl_WideInt avail; /* Bytes avail in buffer. */ int leadblanks; /* Number of leading blank lines read */ *************** *** 481,485 **** int port; /* Port in location. */ int backlog; /* listen() backlog. */ ! int maxinput; /* Maximum request bytes to read. */ int maxline; /* Maximum request line size. */ int maxheaders; /* Maximum number of request headers. */ --- 481,485 ---- int port; /* Port in location. */ int backlog; /* listen() backlog. */ ! Tcl_WideInt maxinput; /* Maximum request bytes to read. */ int maxline; /* Maximum request line size. */ int maxheaders; /* Maximum number of request headers. */ Index: progress.c =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsd/progress.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** progress.c 31 Jul 2007 17:21:06 -0000 1.4 --- progress.c 23 Oct 2007 18:43:13 -0000 1.5 *************** *** 221,225 **** if (!new) { ! Ns_Log(Warning, "ns:progress(%d/%d): ignoring duplicate URL: %s", reqPtr->avail, reqPtr->length, ds.string); } --- 221,225 ---- if (!new) { ! Ns_Log(Warning, "ns:progress(%" TCL_LL_MODIFIER "d/%" TCL_LL_MODIFIER "d): ignoring duplicate URL: %s", reqPtr->avail, reqPtr->length, ds.string); } |