You can subscribe to this list here.
2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(4) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
(54) |
Feb
(71) |
Mar
(93) |
Apr
(48) |
May
(53) |
Jun
(33) |
Jul
(19) |
Aug
(39) |
Sep
(35) |
Oct
(36) |
Nov
(33) |
Dec
(13) |
2004 |
Jan
(10) |
Feb
(1) |
Mar
(17) |
Apr
(9) |
May
(40) |
Jun
(132) |
Jul
(133) |
Aug
(178) |
Sep
(104) |
Oct
(31) |
Nov
(80) |
Dec
(18) |
2005 |
Jan
(54) |
Feb
(9) |
Mar
(35) |
Apr
(2) |
May
(20) |
Jun
(3) |
Jul
(45) |
Aug
(202) |
Sep
(2) |
Oct
(26) |
Nov
|
Dec
(4) |
2006 |
Jan
|
Feb
(7) |
Mar
(8) |
Apr
(66) |
May
(9) |
Jun
(40) |
Jul
(4) |
Aug
(4) |
Sep
|
Oct
|
Nov
(1) |
Dec
(4) |
2007 |
Jan
(2) |
Feb
(14) |
Mar
(4) |
Apr
(1) |
May
(5) |
Jun
(5) |
Jul
|
Aug
(8) |
Sep
(3) |
Oct
(7) |
Nov
|
Dec
|
2008 |
Jan
(6) |
Feb
|
Mar
(1) |
Apr
(8) |
May
(46) |
Jun
(4) |
Jul
(1) |
Aug
|
Sep
(9) |
Oct
(3) |
Nov
|
Dec
(5) |
2009 |
Jan
(9) |
Feb
(2) |
Mar
(3) |
Apr
|
May
(6) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(11) |
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(3) |
Jul
(10) |
Aug
(5) |
Sep
(1) |
Oct
(13) |
Nov
|
Dec
(4) |
2012 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(4) |
Jun
|
Jul
|
Aug
|
Sep
(5) |
Oct
|
Nov
|
Dec
|
2013 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(2) |
Dec
|
2014 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2016 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(5) |
From: Jeff R. <dv...@us...> - 2011-10-13 23:42:14
|
Update of /cvsroot/aolserver/aolserver In directory vz-cvs-4.sog:/tmp/cvs-serv17803 Modified Files: ChangeLog Log Message: add tuning tweak and config variable to let driver accept more than one connection per spin. SF RFE #1014273 Index: ChangeLog =================================================================== RCS file: /cvsroot/aolserver/aolserver/ChangeLog,v retrieving revision 1.403 retrieving revision 1.404 diff -C2 -d -r1.403 -r1.404 *** ChangeLog 11 Oct 2011 22:27:40 -0000 1.403 --- ChangeLog 13 Oct 2011 23:42:11 -0000 1.404 *************** *** 1,2 **** --- 1,8 ---- + 2011-10-13 Jeff Rogers <dv...@di...> + * nsd/nsd.h: + * nsd/driver.c: add tuning tweak and config variable to let + driver accept more than one connection per spin. + SF RFE #1014273 + 2011-10-11 Jeff Rogers <dv...@di...> * nsd/op.c: handle internal error from redirect recursion overflow |
From: Jeff R. <dv...@us...> - 2011-10-11 22:27:53
|
Update of /cvsroot/aolserver/aolserver/nsd In directory vz-cvs-4.sog:/tmp/cvs-serv6096/nsd Modified Files: op.c Log Message: handle internal error from redirect recursion overflow directly instead of redirecting to internal error page. Prevents error displaying error page from crashing server. Index: op.c =================================================================== RCS file: /cvsroot/aolserver/aolserver/nsd/op.c,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** op.c 11 Oct 2011 08:03:27 -0000 1.18 --- op.c 11 Oct 2011 22:27:51 -0000 1.19 *************** *** 247,251 **** "exceeded recursion limit of %d", conn->request->method, conn->request->url, MAX_RECURSION); ! return Ns_ConnReturnInternalError(conn); } --- 247,253 ---- "exceeded recursion limit of %d", conn->request->method, conn->request->url, MAX_RECURSION); ! return Ns_ConnReturnNotice(conn, 500, "Server Error", ! "The requested URL cannot be accessed " ! "due to a system error on this server."); } |
From: Jeff R. <dv...@us...> - 2011-10-11 22:27:42
|
Update of /cvsroot/aolserver/aolserver In directory vz-cvs-4.sog:/tmp/cvs-serv6014 Modified Files: ChangeLog Log Message: handle internal error from redirect recursion overflow directly instead of redirecting to internal error page. Prevents error displaying error page from crashing server. Index: ChangeLog =================================================================== RCS file: /cvsroot/aolserver/aolserver/ChangeLog,v retrieving revision 1.402 retrieving revision 1.403 diff -C2 -d -r1.402 -r1.403 *** ChangeLog 11 Oct 2011 08:03:09 -0000 1.402 --- ChangeLog 11 Oct 2011 22:27:40 -0000 1.403 *************** *** 1,3 **** --- 1,8 ---- 2011-10-11 Jeff Rogers <dv...@di...> + * nsd/op.c: handle internal error from redirect recursion overflow + directly instead of redirecting to internal error page. Prevents + error displaying error page from crashing server. + + 2011-10-11 Jeff Rogers <dv...@di...> * doc/Ns_Filter.3: * doc/ns_filter.n: |
Update of /cvsroot/aolserver/aolserver/nsd In directory vz-cvs-4.sog:/tmp/cvs-serv9402/nsd Modified Files: conn.c connio.c driver.c filter.c nsd.h op.c queue.c server.c tclrequest.c Log Message: add various functions, mostly from SF RFEs - pre-write filter, response content modification, insert/append filter, priority filters, ns_conn gzip flag, re-run filters on redirect with new config option "filterredirect", add new constants, fix STREQ macro Index: nsd.h =================================================================== RCS file: /cvsroot/aolserver/aolserver/nsd/nsd.h,v retrieving revision 1.124 retrieving revision 1.125 diff -C2 -d -r1.124 -r1.125 *** nsd.h 7 Oct 2011 17:06:30 -0000 1.124 --- nsd.h 11 Oct 2011 08:03:27 -0000 1.125 *************** *** 513,516 **** --- 513,522 ---- /* + * output buffers, used if needed + */ + char *sbuf; /* pointer to content requested to be sent */ + Tcl_DString *rbuf; /* buffer for response content. */ + + /* * The following offsets are used to manage the * buffer read-ahead process. *************** *** 585,588 **** --- 591,595 ---- #define SERV_NOTICEDETAIL 0x0008 /* Add detail to notice messages. */ #define SERV_GZIP 0x0010 /* Enable GZIP compression. */ + #define SERV_FILTERREDIRECT 0x0020 /* re-run filters on redirects */ /* *************** *** 1099,1102 **** --- 1106,1110 ---- extern int NsConnRunProxyRequest(Ns_Conn *conn); + extern int NsConnRunDirectRequest(Ns_Conn *conn); #endif Index: conn.c =================================================================== RCS file: /cvsroot/aolserver/aolserver/nsd/conn.c,v retrieving revision 1.51 retrieving revision 1.52 diff -C2 -d -r1.51 -r1.52 *** conn.c 5 Aug 2011 11:49:45 -0000 1.51 --- conn.c 11 Oct 2011 08:03:27 -0000 1.52 *************** *** 1006,1009 **** --- 1006,1065 ---- *---------------------------------------------------------------------- * + * Ns_ConnGetResponseContent + * Ns_ConnSetResponseContent + * Ns_ConnAppendResponseContent + * + * get, set, or append to the response content + * + * Results: + * the current content buffer + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + char *Ns_ConnGetResponseContent(Ns_Conn *conn) + { + Conn *connPtr = (Conn *) conn; + + if (connPtr->rbuf!= NULL) { + return Tcl_DStringValue(connPtr->rbuf); + } else { + return connPtr->sbuf; + } + } + + char *Ns_ConnSetResponseContent(Ns_Conn *conn, char *content) + { + Conn *connPtr = (Conn *) conn; + + if (connPtr->rbuf == NULL) { + connPtr->rbuf=ns_malloc(sizeof(Tcl_DString)); + Tcl_DStringInit(connPtr->rbuf); + } + Tcl_DStringSetLength(connPtr->rbuf,0); + Tcl_DStringAppend(connPtr->rbuf, content, -1); + return Tcl_DStringValue(connPtr->rbuf); + } + + char *Ns_ConnAppendResponseContent(Ns_Conn *conn, char *content) + { + Conn *connPtr = (Conn *) conn; + + if (connPtr->rbuf == NULL) { + connPtr->rbuf=ns_malloc(sizeof(Tcl_DString)); + Tcl_DStringInit(connPtr->rbuf); + Tcl_DStringAppend(connPtr->rbuf, connPtr->sbuf, -1); + } + Tcl_DStringAppend(connPtr->rbuf, content, -1); + return Tcl_DStringValue(connPtr->rbuf); + } + + + + /* + *---------------------------------------------------------------------- + * * NsTclConnObjCmd -- * *************** *** 1044,1048 **** "query", "request", "server", "sock", "start", "status", "url", "urlc", "urlencoding", "urlv", "version", ! "write_encoded", "interp", NULL }; enum { --- 1100,1104 ---- "query", "request", "server", "sock", "start", "status", "url", "urlc", "urlencoding", "urlv", "version", ! "write_encoded", "interp","gzip","responsecontent", NULL }; enum { *************** *** 1055,1059 **** CProtocolIdx, CQueryIdx, CRequestIdx, CServerIdx, CSockIdx, CStartIdx, CStatusIdx, CUrlIdx, CUrlcIdx, CUrlEncodingIdx, ! CUrlvIdx, CVersionIdx, CWriteEncodedIdx, CInterpIdx } opt; --- 1111,1116 ---- CProtocolIdx, CQueryIdx, CRequestIdx, CServerIdx, CSockIdx, CStartIdx, CStatusIdx, CUrlIdx, CUrlcIdx, CUrlEncodingIdx, ! CUrlvIdx, CVersionIdx, CWriteEncodedIdx, CInterpIdx, ! CGzipIdx, CRespContentIdx } opt; *************** *** 1394,1397 **** --- 1451,1475 ---- Tcl_SetLongObj(result, (long) interp); break; + + case CGzipIdx: + if (objc > 2) { + int flag; + if (Tcl_GetBooleanFromObj(interp, objv[2], &flag) != TCL_OK) { + return TCL_ERROR; + } + Ns_ConnSetGzipFlag(conn, flag); + } + Tcl_SetIntObj(result, Ns_ConnGetGzipFlag(conn)); + break; + + case CRespContentIdx: + if (objc == 2) { + Tcl_SetResult(interp, Ns_ConnGetResponseContent(connPtr), TCL_STATIC); + } else if (objc == 3) { + Tcl_SetResult(interp, Ns_ConnSetResponseContent(connPtr, Tcl_GetString(objv[2])), TCL_STATIC); + } else { + Tcl_WrongNumArgs(interp, 2, objv, "?value?"); + return TCL_ERROR; + } } *************** *** 1640,1643 **** --- 1718,1724 ---- connPtr->sockPtr->sock = sock; } + if (chan != NULL) { + Tcl_Ungets(chan,connPtr->content, connPtr->avail, 0); + } return chan; Index: connio.c =================================================================== RCS file: /cvsroot/aolserver/aolserver/nsd/connio.c,v retrieving revision 1.28 retrieving revision 1.29 diff -C2 -d -r1.28 -r1.29 *** connio.c 8 Dec 2009 04:12:19 -0000 1.28 --- connio.c 11 Oct 2011 08:03:27 -0000 1.29 *************** *** 136,139 **** --- 136,149 ---- int status; + connPtr->sbuf=buf; + if (NsRunFilters((Ns_Conn *) connPtr, NS_FILTER_PRE_WRITE) != NS_OK) { + return NS_ERROR; + } + if (connPtr->rbuf != NULL) { + /* the content was set by pre-write filters */ + buf=Tcl_DStringValue(connPtr->rbuf); + len=Tcl_DStringLength(connPtr->rbuf); + } + Tcl_DStringInit(&enc); Tcl_DStringInit(&gzip); Index: op.c =================================================================== RCS file: /cvsroot/aolserver/aolserver/nsd/op.c,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** op.c 16 Jul 2011 09:25:29 -0000 1.17 --- op.c 11 Oct 2011 08:03:27 -0000 1.18 *************** *** 291,295 **** { Conn *connPtr = (Conn *) conn; - int status; ++connPtr->recursionCount; --- 291,294 ---- *************** *** 305,328 **** */ ! status = Ns_AuthorizeRequest(Ns_ConnServer(conn), conn->request->method, ! conn->request->url, conn->authUser, ! conn->authPasswd, Ns_ConnPeer(conn)); ! switch (status) { ! case NS_OK: ! status = Ns_ConnRunRequest(conn); ! break; ! case NS_FORBIDDEN: ! status = Ns_ConnReturnForbidden(conn); ! break; ! case NS_UNAUTHORIZED: ! status = Ns_ConnReturnUnauthorized(conn); ! break; ! case NS_ERROR: ! default: ! status = Ns_ConnReturnInternalError(conn); ! break; ! } ! ! return status; } --- 304,308 ---- */ ! return NsConnRunDirectRequest(conn); } *************** *** 472,475 **** --- 452,527 ---- *---------------------------------------------------------------------- * + * NsConnRunDirectRequest -- + * + * runs pre/post-auth filters and main connection + * + * Results: + * Standard request procedure result, normally NS_OK. + * + * Side effects: + * Depends on request procedure. + * + *---------------------------------------------------------------------- + */ + + int NsConnRunDirectRequest(Ns_Conn *conn) + { + int status; + Conn *connPtr = (Conn *) conn; + + /* + * always run pre/post-auth filters on initial request; + * if this is an internal redirect then only run them + * if the "filterredirect" option is set + */ + int runFilters = (connPtr->recursionCount == 0 || + connPtr->servPtr->opts.flags & SERV_FILTERREDIRECT); + + status = runFilters ? + NsRunFilters(conn, NS_FILTER_PRE_AUTH) : + NS_OK; + if (status == NS_OK) { + status = Ns_AuthorizeRequest(Ns_ConnServer(conn), + conn->request->method, conn->request->url, + conn->authUser, conn->authPasswd, Ns_ConnPeer(conn)); + switch (status) { + case NS_OK: + status = runFilters ? + NsRunFilters(conn, NS_FILTER_POST_AUTH) : + NS_OK; + if (status == NS_OK) { + status = Ns_ConnRunRequest(conn); + } + break; + + case NS_FORBIDDEN: + Ns_ConnReturnForbidden(conn); + break; + + case NS_UNAUTHORIZED: + Ns_ConnReturnUnauthorized(conn); + break; + + case NS_ERROR: + default: + Ns_ConnReturnInternalError(conn); + break; + } + } else if (status != NS_FILTER_RETURN) { + /* if not ok or filter_return, then the pre-auth filter coughed + * an error. We are not going to proceed, but also we + * can't count on the filter to have sent a response + * back to the client. So, send an error response. + */ + Ns_ConnReturnInternalError(conn); + status = NS_FILTER_RETURN; /* to allow tracing to happen */ + } + return status; + } + + + /* + *---------------------------------------------------------------------- + * * FreeReq -- * Index: filter.c =================================================================== RCS file: /cvsroot/aolserver/aolserver/nsd/filter.c,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** filter.c 28 Sep 2002 19:23:39 -0000 1.10 --- filter.c 11 Oct 2011 08:03:27 -0000 1.11 *************** *** 58,61 **** --- 58,63 ---- } Trace; + #define FILTER_GETPRIO(when) ((signed char)((when & 0xFF000000) >> 24)) + static Trace *NewTrace(Ns_TraceProc *proc, void *arg); static void RunTraces(Ns_Conn *conn, Trace *firstPtr); *************** *** 96,104 **** fPtr->when = when; fPtr->arg = arg; - fPtr->nextPtr = NULL; fPtrPtr = &servPtr->filter.firstFilterPtr; ! while (*fPtrPtr != NULL) { fPtrPtr = &((*fPtrPtr)->nextPtr); } *fPtrPtr = fPtr; return (void *) fPtr; --- 98,115 ---- fPtr->when = when; fPtr->arg = arg; fPtrPtr = &servPtr->filter.firstFilterPtr; ! /* locate the first filter at this priority */ ! while (*fPtrPtr != NULL ! && FILTER_GETPRIO(fPtr->when) > FILTER_GETPRIO((*fPtrPtr)->when)) { fPtrPtr = &((*fPtrPtr)->nextPtr); } + /* if appending, locate last filter in the same priority group */ + if (!(when & NS_FILTER_INSERT)) { + while (*fPtrPtr != NULL + && FILTER_GETPRIO(fPtr->when) == FILTER_GETPRIO((*fPtrPtr)->when)) { + fPtrPtr = &((*fPtrPtr)->nextPtr); + } + } + fPtr->nextPtr = *fPtrPtr; *fPtrPtr = fPtr; return (void *) fPtr; Index: server.c =================================================================== RCS file: /cvsroot/aolserver/aolserver/nsd/server.c,v retrieving revision 1.50 retrieving revision 1.51 diff -C2 -d -r1.50 -r1.51 *** server.c 7 Oct 2011 17:06:31 -0000 1.50 --- server.c 11 Oct 2011 08:03:27 -0000 1.51 *************** *** 271,274 **** --- 271,277 ---- servPtr->opts.flags |= SERV_NOTICEDETAIL; } + if (!Ns_ConfigGetBool(path, "filterredirect", &i) || i) { + servPtr->opts.flags |= SERV_FILTERREDIRECT; + } p = Ns_ConfigGetValue(path, "headercase"); if (p != NULL && STRIEQ(p, "tolower")) { Index: queue.c =================================================================== RCS file: /cvsroot/aolserver/aolserver/nsd/queue.c,v retrieving revision 1.50 retrieving revision 1.51 diff -C2 -d -r1.50 -r1.51 *** queue.c 5 Aug 2011 11:49:45 -0000 1.50 --- queue.c 11 Oct 2011 08:03:27 -0000 1.51 *************** *** 597,635 **** status = NsConnRunProxyRequest((Ns_Conn *) connPtr); } else { ! status = NsRunFilters(conn, NS_FILTER_PRE_AUTH); ! if (status == NS_OK) { ! status = Ns_AuthorizeRequest(servPtr->server, ! connPtr->request->method, connPtr->request->url, ! connPtr->authUser, connPtr->authPasswd, connPtr->peer); ! switch (status) { ! case NS_OK: ! status = NsRunFilters(conn, NS_FILTER_POST_AUTH); ! if (status == NS_OK) { ! status = Ns_ConnRunRequest(conn); ! } ! break; ! ! case NS_FORBIDDEN: ! Ns_ConnReturnForbidden(conn); ! break; ! ! case NS_UNAUTHORIZED: ! Ns_ConnReturnUnauthorized(conn); ! break; ! ! case NS_ERROR: ! default: ! Ns_ConnReturnInternalError(conn); ! break; ! } ! } else if (status != NS_FILTER_RETURN) { ! /* if not ok or filter_return, then the pre-auth filter coughed ! * an error. We are not going to proceed, but also we ! * can't count on the filter to have sent a response ! * back to the client. So, send an error response. ! */ ! Ns_ConnReturnInternalError(conn); ! status = NS_FILTER_RETURN; /* to allow tracing to happen */ ! } } Ns_ConnClose(conn); --- 597,601 ---- status = NsConnRunProxyRequest((Ns_Conn *) connPtr); } else { ! status = NsConnRunDirectRequest((Ns_Conn *) connPtr); } Ns_ConnClose(conn); Index: tclrequest.c =================================================================== RCS file: /cvsroot/aolserver/aolserver/nsd/tclrequest.c,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** tclrequest.c 8 Dec 2009 04:12:19 -0000 1.14 --- tclrequest.c 11 Oct 2011 08:03:27 -0000 1.15 *************** *** 258,279 **** int when, i; static CONST char *wopt[] = { ! "read", "write", "prequeue", "preauth", "postauth", "trace", NULL }; enum { ! ReadIdx, WriteIdx, PreQueueIdx, PreAuthIdx, PostAuthIdx, TraceIdx, } widx; if (objc < 2) { ! Tcl_WrongNumArgs(interp, 1, objv, "option ?args?"); return TCL_ERROR; } ! if (objc != 5 && objc != 6) { ! Tcl_WrongNumArgs(interp, 1, objv, "when method url script ?arg?"); ! return TCL_ERROR; } if (Tcl_ListObjGetElements(interp, objv[1], &lobjc, &lobjv) != TCL_OK) { return TCL_ERROR; } - when = 0; for (i = 0; i < lobjc; ++i) { if (Tcl_GetIndexFromObj(interp, lobjv[i], wopt, "when", 0, --- 258,305 ---- int when, i; static CONST char *wopt[] = { ! "read", "prewrite", "write", "prequeue", "preauth", "postauth", "trace", NULL }; enum { ! ReadIdx, PreWriteIdx, WriteIdx, PreQueueIdx, PreAuthIdx, PostAuthIdx, TraceIdx, } widx; if (objc < 2) { ! error: ! Tcl_SetResult(interp, "wrong arguments: should be ns_register_filter " ! "?-insert? ?-priority num? when method url script ?arg?", ! TCL_STATIC); return TCL_ERROR; } ! when = 0; ! for (i = 1; i < objc; i++) { ! char *arg = Tcl_GetString(objv[i]); ! if (*arg != '-') break; ! if (STRIEQ(arg, "-insert")) { ! when |= NS_FILTER_INSERT; ! } else if (STRIEQ(arg, "-priority")) { ! if (++i >= objc) goto error; ! int prio; ! if (Tcl_GetIntFromObj(interp,objv[i],&prio) != TCL_OK) { ! return TCL_ERROR; ! } ! if (prio < -128 || prio > 127) { ! Tcl_SetResult(interp, "priority must be in range -128 .. 127", ! TCL_STATIC); ! return TCL_ERROR; ! } ! when |= NS_FILTER_PRIORITY(prio); ! } else { ! goto error; ! } ! } ! objc-=(i-1); ! objv+=(i-1); ! ! if (objc < 5 || objc > 6) { ! goto error; } if (Tcl_ListObjGetElements(interp, objv[1], &lobjc, &lobjv) != TCL_OK) { return TCL_ERROR; } for (i = 0; i < lobjc; ++i) { if (Tcl_GetIndexFromObj(interp, lobjv[i], wopt, "when", 0, *************** *** 285,288 **** --- 311,317 ---- when |= NS_FILTER_READ; break; + case PreWriteIdx: + when |= NS_FILTER_PRE_WRITE; + break; case WriteIdx: when |= NS_FILTER_WRITE; *************** *** 514,517 **** --- 543,549 ---- Tcl_DStringAppendElement(&script, "read"); break; + case NS_FILTER_PRE_WRITE: + Tcl_DStringAppendElement(&script, "prewrite"); + break; case NS_FILTER_WRITE: Tcl_DStringAppendElement(&script, "write"); Index: driver.c =================================================================== RCS file: /cvsroot/aolserver/aolserver/nsd/driver.c,v retrieving revision 1.62 retrieving revision 1.63 diff -C2 -d -r1.62 -r1.63 *** driver.c 9 Jul 2011 10:06:46 -0000 1.62 --- driver.c 11 Oct 2011 08:03:27 -0000 1.63 *************** *** 2326,2329 **** --- 2326,2334 ---- Ns_SetFree(connPtr->outputheaders); + if (connPtr->rbuf != NULL) { + Tcl_DStringFree(connPtr->rbuf); + ns_free(connPtr->rbuf); + } + /* * Truncate the I/O buffers, zero remaining elements of the Conn, |
From: Jeff R. <dv...@us...> - 2011-10-11 08:03:11
|
Update of /cvsroot/aolserver/aolserver/doc In directory vz-cvs-4.sog:/tmp/cvs-serv9311/doc Modified Files: Ns_Filter.3 ns_filter.n Log Message: add various functions, mostly from SF RFEs - pre-write filter, response content modification, insert/append filter, priority filters, ns_conn gzip flag, re-run filters on redirect with new config option "filterredirect", add new constants, fix STREQ macro Index: Ns_Filter.3 =================================================================== RCS file: /cvsroot/aolserver/aolserver/doc/Ns_Filter.3,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** Ns_Filter.3 8 Dec 2009 04:13:18 -0000 1.6 --- Ns_Filter.3 11 Oct 2011 08:03:09 -0000 1.7 *************** *** 58,66 **** .AP int when in ! OR-ed combination of the values \fBNS_FILTER_READ\fR, ! \fBNS_FILTER_PRE_QUEUE\fR, \fBNS_FILTER_PRE_AUTH\fR, ! \fBNS_FILTER_POST_AUTH\fR, \fBNS_FILTER_WRITE\fR, and ! \fBNS_FILTER_TRACE\fI indicating the connection state at ! which \fIproc\fR should be invoked. .AP void *arg in --- 58,76 ---- .AP int when in ! OR-ed combination of flags controlling when ! .B proc ! is to be invoked. Suppoeted values ! are ! .BR NS_FILTER_READ , ! .BR NS_FILTER_PRE_QUEUE , ! .BR NS_FILTER_PRE_AUTH , ! .BR NS_FILTER_POST_AUTH , ! .BR NS_FILTER_PRE_WRITE , ! .BR NS_FILTER_WRITE , ! .BR NS_FILTER_TRACE , ! .BR NS_FILTER_PRIORITY(prio) , ! .BR NS_FILTER_INSERT , ! .BR NS_FILTER_APPEND . ! See below for more information. .AP void *arg in *************** *** 131,140 **** to access addition, possibly blocking network resources before queueing the thread for processing. ! If this \fIproc\fR returns a value other than \fBNS_OK\fR, the conneciton will be aborted. .sp NOTE: See the comments above for \fBNS_FILTER_READ\fR for caveats ! of \fIproc\fR being invoked in a thread other than the conneciton processing thread. --- 141,150 ---- to access addition, possibly blocking network resources before queueing the thread for processing. ! If this \fIproc\fR returns a value other than \fBNS_OK\fR, the connection will be aborted. .sp NOTE: See the comments above for \fBNS_FILTER_READ\fR for caveats ! of \fIproc\fR being invoked in a thread other than the connection processing thread. *************** *** 148,151 **** --- 158,188 ---- .TP + NS_FILTER_PRE_WRITE + Invoke + .I proc + just before sending content to the client. A filter at this point can + access content to be sent with + .BR Ns_ConnGetResponseContent, + set it with + .BR Ns_ConnSetResponseContent, + or append to it with + .B Ns_ConnAppendResponseContent. + + .sp + NOTE(1): This filter may not get called at all for a response; in + particular FastPath responses will bypass it, as will content sent by + the lower-level i/o functions. + + .sp + NOTE(2): This filter may be invoked from the connection thread or + from a different thread. See the comments above for + .B NS_FILTER_READ + for caveats + of + .I proc + being invoked in a thread other than the connection + processing thread. + + .TP NS_FILTER_WRITE Invoke \fIproc\fR after each write to the client. *************** *** 157,160 **** --- 194,213 ---- NS_FILTER_TRACE + .TP + NS_FILTER_PRIORITY(prio) + Sets the priortiy of this filter. Valid values for prio are -128 to + 127. Numerically lower values have higher priority, i.e., they will + be executed first. The default priority value is 0; values outside the + range [-100 .. 100] are reserved for system use. + + .TP + NS_FILTER_INSERT + Insert this filter at the beginning of the list of filters with equal + priority. + + .TP + NS_FILTER_APPEND + Append this filter to the end of the list of filters with equal priority. + This flag is the default. .SH "SEE ALSO" Index: ns_filter.n =================================================================== RCS file: /cvsroot/aolserver/aolserver/doc/ns_filter.n,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** ns_filter.n 8 Dec 2009 15:33:00 -0000 1.5 --- ns_filter.n 11 Oct 2011 08:03:09 -0000 1.6 *************** *** 43,57 **** \fBns_register_trace \fImethod url script ?arg?\fR .sp ! \fBns_register_filter read\fR \fImethod url script ?arg?\fR .sp ! \fBns_register_filter prequeue\fR \fImethod url script ?arg?\fR .sp ! \fBns_register_filter preauth\fR \fImethod url script ?arg?\fR .sp ! \fBns_register_filter postauth\fR \fImethod url script ?arg?\fR .sp ! \fBns_register_filter write\fR \fImethod url script ?arg?\fR .sp ! \fBns_register_filter trace\fR \fImethod url script ?arg?\fR .BE --- 43,59 ---- \fBns_register_trace \fImethod url script ?arg?\fR .sp ! \fBns_register_filter read\fR \fI?-insert|-append? ?-priority num? method url script ?arg?\fR .sp ! \fBns_register_filter prequeue\fR \fI?-insert|-append? ?-priority num? method url script ?arg?\fR .sp ! \fBns_register_filter preauth\fR \fI?-insert|-append? ?-priority num? method url script ?arg?\fR .sp ! \fBns_register_filter postauth\fR \fI?-insert|-append? ?-priority num? method url script ?arg?\fR .sp ! \fBns_register_filter prewrite\fR \fI?-insert|-append? ?-priority num? method url script ?arg?\fR .sp ! \fBns_register_filter write\fR \fI?-insert|-append? ?-priority num? method url script ?arg?\fR ! .sp ! \fBns_register_filter trace\fR \fI?-insert|-append? ?-priority num? method url script ?arg?\fR .BE *************** *** 89,92 **** --- 91,118 ---- .PP + The + .I -priority num + option controls the order in which filters will be executed for a given + phase. The valid range for + .I num + is -128 to 127, with lower values having higher priority, i.e., they + will be executed sooner. The default priority is 0. Priority values + outside the range [-100 .. 100] are reserved for system use. + + .PP + The + .I -insert + or + .I -append + options control where a new filter is added in relation to other + filters of equal priority. + .I -insert + causes the filter to be added to the front of the list (executed first), + while + .I -append + causes it to be added to the end of the list. The default is + .I -append + + .PP The \fIproc\fR argument is the name of a Tcl procedure to invoke when the connection has reached the requested state. The \fIproc\fR *************** *** 167,170 **** --- 193,203 ---- .TP + \fBns_register_filter \fBprewrite\fR \fImethod url script ?arg?\fR + Invoke \fIproc\fR before the response content is sent to the client. + This filter can be used to modify the response content before being + sent. This filter will not get called for content sent with + \fBns_returnfile\fR or \fBns_write\fR + + .TP \fBns_register_filter \fBwrite\fR \fImethod url script ?arg?\fR Invoke \fIproc\fR after each write to the client. Note the |
From: Jeff R. <dv...@us...> - 2011-10-07 17:29:59
|
Update of /cvsroot/aolserver/aolserver/tests/bugs In directory vz-cvs-4.sog:/tmp/cvs-serv26195/bugs Added Files: README Log Message: added tests for fastpath collision bug --- NEW FILE: README --- These files contain sample code to demonstrate buggy behavior |
From: Jeff R. <dv...@us...> - 2011-10-07 17:29:13
|
Update of /cvsroot/aolserver/aolserver/tests/bugs/fastpath In directory vz-cvs-4.sog:/tmp/cvs-serv26170/fastpath Log Message: Directory /cvsroot/aolserver/aolserver/tests/bugs/fastpath added to the repository |
From: Jeff R. <dv...@us...> - 2011-10-07 17:29:02
|
Update of /cvsroot/aolserver/aolserver/tests/bugs In directory vz-cvs-4.sog:/tmp/cvs-serv26158/bugs Log Message: Directory /cvsroot/aolserver/aolserver/tests/bugs added to the repository |
From: Jeff R. <dv...@us...> - 2011-10-07 17:06:35
|
Update of /cvsroot/aolserver/aolserver/nsd In directory vz-cvs-4.sog:/tmp/cvs-serv24231/nsd Modified Files: nsd.h server.c fastpath.c Log Message: apply patch from John Caruso to avoid fastpath caching a file that has been modified too recently and possibly colliding inodes Index: fastpath.c =================================================================== RCS file: /cvsroot/aolserver/aolserver/nsd/fastpath.c,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** fastpath.c 18 Aug 2011 09:24:59 -0000 1.27 --- fastpath.c 7 Oct 2011 17:06:32 -0000 1.28 *************** *** 503,509 **** if (servPtr->fastpath.cache == NULL ! || stPtr->st_size > servPtr->fastpath.cachemaxentry) { /* ! * Caching is disabled or the entry is too large for the cache * so just open, mmap, and send the content directly. */ --- 503,511 ---- if (servPtr->fastpath.cache == NULL ! || stPtr->st_size > servPtr->fastpath.cachemaxentry ! || (time(NULL) - stPtr->st_ctime) < servPtr->fastpath.cacheminage ) { /* ! * Caching is disabled, the entry is too large for the cache, ! * or the inode was changed too recently to be cached safely, * so just open, mmap, and send the content directly. */ Index: nsd.h =================================================================== RCS file: /cvsroot/aolserver/aolserver/nsd/nsd.h,v retrieving revision 1.123 retrieving revision 1.124 diff -C2 -d -r1.123 -r1.124 *** nsd.h 28 Sep 2011 05:50:47 -0000 1.123 --- nsd.h 7 Oct 2011 17:06:30 -0000 1.124 *************** *** 655,658 **** --- 655,659 ---- bool mmap; int cachemaxentry; + int cacheminage; Ns_UrlToFileProc *url2file; Ns_Cache *cache; Index: server.c =================================================================== RCS file: /cvsroot/aolserver/aolserver/nsd/server.c,v retrieving revision 1.49 retrieving revision 1.50 diff -C2 -d -r1.49 -r1.50 *** server.c 5 Jul 2011 18:37:47 -0000 1.49 --- server.c 7 Oct 2011 17:06:31 -0000 1.50 *************** *** 393,396 **** --- 393,400 ---- } servPtr->fastpath.cachemaxentry = i; + if (!Ns_ConfigGetInt(path, "cacheminage", &i) || i < 0) { + i = 1; + } + servPtr->fastpath.cacheminage = i; servPtr->fastpath.cache = NsFastpathCache(server, n); } |
From: Jeff R. <dv...@us...> - 2011-10-07 17:06:19
|
Update of /cvsroot/aolserver/aolserver In directory vz-cvs-4.sog:/tmp/cvs-serv24216 Modified Files: ChangeLog Log Message: apply patch from John Caruso to avoid fastpath caching a file that has been modified too recently and possibly colliding inodes Index: ChangeLog =================================================================== RCS file: /cvsroot/aolserver/aolserver/ChangeLog,v retrieving revision 1.400 retrieving revision 1.401 diff -C2 -d -r1.400 -r1.401 *** ChangeLog 28 Sep 2011 05:50:47 -0000 1.400 --- ChangeLog 7 Oct 2011 17:06:16 -0000 1.401 *************** *** 1,2 **** --- 1,10 ---- + 2011-10-07 Jeff Rogers <dv...@di...> + * nsd/nsd.h: + * nsd/fastpath.c: + * nsd/server.c: apply patch from John Caruso to avoid fastpath + caching a file that has been modified too recently and possibly + colliding inodes. Added new fastpath config option "cacheminage" + to control timing. + 2011-09-27 Jeff Rogers <dv...@di...> * nsd/nsd.h: |
From: Jeff R. <dv...@us...> - 2011-09-28 05:50:49
|
Update of /cvsroot/aolserver/aolserver In directory vz-cvs-4.sog:/tmp/cvs-serv13937 Modified Files: ChangeLog Log Message: added NsTclGetNative function to get decoded versions of strings. Use that function to get filenames with ns_retutrnfile and ns_respond Index: ChangeLog =================================================================== RCS file: /cvsroot/aolserver/aolserver/ChangeLog,v retrieving revision 1.399 retrieving revision 1.400 diff -C2 -d -r1.399 -r1.400 *** ChangeLog 24 Aug 2011 18:48:38 -0000 1.399 --- ChangeLog 28 Sep 2011 05:50:47 -0000 1.400 *************** *** 1,2 **** --- 1,9 ---- + 2011-09-27 Jeff Rogers <dv...@di...> + * nsd/nsd.h: + * nsd/tclmisc.c: add NsTclGetNative function to retrieve decoded + strings (rather than utf-8) from Tcl_Objs + * nsd/tclreturn.c: decode strings for passing to ns_returnfile + and ns_respond + 2011-08-24 Jeff Rogers <dv...@di...> * nsd/adpparse.c: enhance parsing to recognize a xml-style minimized |
From: Jeff R. <dv...@us...> - 2011-08-24 18:48:55
|
Update of /cvsroot/aolserver/aolserver/nsd In directory vz-cvs-4.sog:/tmp/cvs-serv27790/nsd Modified Files: adpparse.c Log Message: nsd/adpparse.c: enhance parsing to recognize a xml-style minimized registered tag as an empty open/close sequence. Fix to allow arbitrary balanced nesting of <% %> tags (SF bug #2958550) Index: adpparse.c =================================================================== RCS file: /cvsroot/aolserver/aolserver/nsd/adpparse.c,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** adpparse.c 19 Jun 2006 15:01:41 -0000 1.21 --- adpparse.c 24 Aug 2011 18:48:53 -0000 1.22 *************** *** 62,65 **** --- 62,66 ---- char *tag; /* The name of the tag (e.g., "mytag") */ char *endtag; /* The closing tag or null (e.g., "/mytag")*/ + int balanced;/* true if open/close tags are the same */ char *string; /* Proc (e.g., "ns_adp_netscape") or ADP string. */ } Tag; *************** *** 201,204 **** --- 202,207 ---- Tcl_SetHashValue(hPtr, tagPtr); tagPtr->tag = Tcl_GetHashKey(&servPtr->adp.tags, hPtr); + tagPtr->balanced=(tagPtr->endtag != NULL && *(tagPtr->endtag) == '/' && + STREQ(tagPtr->tag, (tagPtr->endtag+1))); Ns_RWLockUnlock(&servPtr->adp.taglock); Tcl_DStringFree(&tbuf); *************** *** 289,302 **** */ - level = 0; e = strstr(e - 1, "%>"); n = s + 2; while (e != NULL && (n = strstr(n, "<%")) != NULL && n < e) { - ++level; n = n + 2; - } - while (e != NULL && level > 0) { e = strstr(e + 2, "%>"); - --level; } if (e == NULL) { --- 292,300 ---- *************** *** 356,359 **** --- 354,360 ---- AppendTag(&parse, tagPtr, a, e, NULL); text = e + 1; + } else if (tagPtr->balanced && *(e-1) == '/') { + AppendTag(&parse, tagPtr, a, e, e+1); + text = e + 1; } else { as = a; *************** *** 592,595 **** --- 593,603 ---- *servPtr = 0; } + /* + * discard a trailing '/' from the attribute value + * for xml-ish minimized empty elements + */ + if (*(e-1) == '/') { + e--; + } while (s < e) { /* |
From: Jeff R. <dv...@us...> - 2011-08-24 18:48:40
|
Update of /cvsroot/aolserver/aolserver In directory vz-cvs-4.sog:/tmp/cvs-serv27763 Modified Files: ChangeLog Log Message: nsd/adpparse.c: enhance parsing to recognize a xml-style minimized registered tag as an empty open/close sequence. Fix to allow arbitrary balanced nesting of <% %> tags (SF bug #2958550) Index: ChangeLog =================================================================== RCS file: /cvsroot/aolserver/aolserver/ChangeLog,v retrieving revision 1.398 retrieving revision 1.399 diff -C2 -d -r1.398 -r1.399 *** ChangeLog 7 Jun 2011 21:37:21 -0000 1.398 --- ChangeLog 24 Aug 2011 18:48:38 -0000 1.399 *************** *** 1,2 **** --- 1,7 ---- + 2011-08-24 Jeff Rogers <dv...@di...> + * nsd/adpparse.c: enhance parsing to recognize a xml-style minimized + registered tag as an empty open/close sequence. Fix to allow + arbitrary balanced nesting of <% %> tags (SF bug #2958550) + 2011-05-07 Jeff Rogers <dv...@di...> * nsthread/pthread.c: change to use passed resultArg directly so |
From: gustafn <gne...@us...> - 2011-08-18 09:25:02
|
Update of /cvsroot/aolserver/aolserver/nsd In directory vz-cvs-4.sog:/tmp/cvs-serv20034 Modified Files: fastpath.c fd.c nsd.h Log Message: - apply patch from Jin Choi - minor cleanup Index: fastpath.c =================================================================== RCS file: /cvsroot/aolserver/aolserver/nsd/fastpath.c,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** fastpath.c 19 Apr 2006 17:48:47 -0000 1.26 --- fastpath.c 18 Aug 2011 09:24:59 -0000 1.27 *************** *** 43,51 **** */ - #ifdef MAP_FAILED - #undef MAP_FAILED - #endif - #define MAP_FAILED ((void *) (-1)) - /* * The following structure defines the contents of a file --- 43,46 ---- *************** *** 522,526 **** if (servPtr->fastpath.mmap) { map = NsMap(fd, 0, stPtr->st_size, 0, &arg); ! if (map != NULL) { close(fd); fd = -1; --- 517,521 ---- if (servPtr->fastpath.mmap) { map = NsMap(fd, 0, stPtr->st_size, 0, &arg); ! if (map != MAP_FAILED) { close(fd); fd = -1; Index: fd.c =================================================================== RCS file: /cvsroot/aolserver/aolserver/nsd/fd.c,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** fd.c 22 Mar 2008 17:43:39 -0000 1.13 --- fd.c 18 Aug 2011 09:24:59 -0000 1.14 *************** *** 511,515 **** * * Results: ! * Pointer to mapped region or NULL if mapping failed. * * Side effects: --- 511,515 ---- * * Results: ! * Pointer to mapped region or MAP_FAILED if mapping failed. * * Side effects: *************** *** 524,528 **** #ifdef _WIN32 /* TODO: Make this work on Win32. */ ! return NULL; #else int prot; --- 524,528 ---- #ifdef _WIN32 /* TODO: Make this work on Win32. */ ! return MAP_FAILED; #else int prot; Index: nsd.h =================================================================== RCS file: /cvsroot/aolserver/aolserver/nsd/nsd.h,v retrieving revision 1.121 retrieving revision 1.122 diff -C2 -d -r1.121 -r1.122 *** nsd.h 5 Aug 2011 11:49:45 -0000 1.121 --- nsd.h 18 Aug 2011 09:24:59 -0000 1.122 *************** *** 105,108 **** --- 105,111 ---- #define NS_SIGTERM 1 #define NS_SIGHUP 2 + # ifndef MAP_FAILED + # define MAP_FAILED ((void *) (-1)) + # endif #else #define NS_SIGTERM SIGTERM |
From: gustafn <gne...@us...> - 2011-08-07 13:30:45
|
Update of /cvsroot/aolserver/aolserver/nsd In directory vz-cvs-4.sog:/tmp/cvs-serv32165 Modified Files: nsmain.c Log Message: - deactivating Tcl_Finalize() under _WIN32 (see discussions on mailing list) Index: nsmain.c =================================================================== RCS file: /cvsroot/aolserver/aolserver/nsd/nsmain.c,v retrieving revision 1.65 retrieving revision 1.66 diff -C2 -d -r1.65 -r1.66 *** nsmain.c 13 Apr 2006 19:06:37 -0000 1.65 --- nsmain.c 7 Aug 2011 13:30:42 -0000 1.66 *************** *** 631,635 **** --- 631,644 ---- NsRemovePidFile(procname); StatusMsg(3); + + #ifndef _WIN32 + /* + * Tcl_Finalize() hangs under Win32 and Win64, at least with Tcl + * 8.5 versions up to 8.5.10.We may want to reactivate this call + * with some later versions. + */ Tcl_Finalize(); + #endif + return 0; } |
From: gustafn <gne...@us...> - 2011-08-05 11:49:47
|
Update of /cvsroot/aolserver/aolserver/include In directory vz-cvs-4.sog:/tmp/cvs-serv1415/include Modified Files: ns.h Log Message: Patches mostly from Maurizio Martignano - changed types of file descriptors for socket from "int" to "SOCKET" - some more _WIN32 cleanups - defined macro INT2PTR() like in tclInt.h for uniform conversion from "int" to pointers - minor cleanups for unix using INT2PTR (more similar occurences still to do) Index: ns.h =================================================================== RCS file: /cvsroot/aolserver/aolserver/include/ns.h,v retrieving revision 1.91 retrieving revision 1.92 diff -C2 -d -r1.91 -r1.92 *** ns.h 9 Jul 2011 10:06:46 -0000 1.91 --- ns.h 5 Aug 2011 11:49:44 -0000 1.92 *************** *** 161,164 **** --- 161,174 ---- typedef ns_int64 INT64; + #if !defined(INT2PTR) && !defined(PTR2INT) + # if defined(HAVE_INTPTR_T) || defined(intptr_t) + # define INT2PTR(p) ((void *)(intptr_t)(p)) + # define PTR2INT(p) ((int)(intptr_t)(p)) + # else + # define INT2PTR(p) ((void *)(p)) + # define PTR2INT(p) ((int)(p)) + # endif + #endif + /* * The following flags define how Ns_Set's *************** *** 220,224 **** #define O_TEXT 0 #define O_BINARY 0 ! #define SOCKET int #define INVALID_SOCKET (-1) #define SOCKET_ERROR (-1) --- 230,234 ---- #define O_TEXT 0 #define O_BINARY 0 ! #define SOCKET int #define INVALID_SOCKET (-1) #define SOCKET_ERROR (-1) *************** *** 671,675 **** NS_EXTERN char *Ns_ConnHost(Ns_Conn *conn); NS_EXTERN int Ns_ConnPort(Ns_Conn *conn); ! NS_EXTERN int Ns_ConnSock(Ns_Conn *conn); NS_EXTERN char *Ns_ConnDriverName(Ns_Conn *conn); NS_EXTERN void *Ns_ConnDriverContext(Ns_Conn *conn); --- 681,685 ---- NS_EXTERN char *Ns_ConnHost(Ns_Conn *conn); NS_EXTERN int Ns_ConnPort(Ns_Conn *conn); ! NS_EXTERN SOCKET Ns_ConnSock(Ns_Conn *conn); NS_EXTERN char *Ns_ConnDriverName(Ns_Conn *conn); NS_EXTERN void *Ns_ConnDriverContext(Ns_Conn *conn); |
From: gustafn <gne...@us...> - 2011-07-16 09:40:04
|
Update of /cvsroot/aolserver/aolserver/nsd In directory vz-cvs-4.sog:/tmp/cvs-serv17924 Modified Files: tclcmds.c Log Message: - fixed order of registered commands Index: tclcmds.c =================================================================== RCS file: /cvsroot/aolserver/aolserver/nsd/tclcmds.c,v retrieving revision 1.59 retrieving revision 1.60 diff -C2 -d -r1.59 -r1.60 *** tclcmds.c 16 Jul 2011 09:36:09 -0000 1.59 --- tclcmds.c 16 Jul 2011 09:40:02 -0000 1.60 *************** *** 378,383 **** {"ns_returnnotice", NsTclReturnNoticeCmd, NULL}, {"ns_returnredirect", NULL, NsTclReturnRedirectObjCmd}, - {"ns_returnunauthorized", NULL, NsTclReturnUnauthorizedObjCmd}, {"ns_returntoolarge", NULL, NsTclReturnTooLargeObjCmd}, {"ns_rmdir", NULL, NsTclRmdirObjCmd}, {"ns_rollfile", NULL, NsTclRollFileObjCmd}, --- 378,383 ---- {"ns_returnnotice", NsTclReturnNoticeCmd, NULL}, {"ns_returnredirect", NULL, NsTclReturnRedirectObjCmd}, {"ns_returntoolarge", NULL, NsTclReturnTooLargeObjCmd}, + {"ns_returnunauthorized", NULL, NsTclReturnUnauthorizedObjCmd}, {"ns_rmdir", NULL, NsTclRmdirObjCmd}, {"ns_rollfile", NULL, NsTclRollFileObjCmd}, |
From: gustafn <gne...@us...> - 2011-07-16 09:36:11
|
Update of /cvsroot/aolserver/aolserver/nsd In directory vz-cvs-4.sog:/tmp/cvs-serv17525 Modified Files: tclcmds.c Log Message: - 2nd part of last commit Index: tclcmds.c =================================================================== RCS file: /cvsroot/aolserver/aolserver/nsd/tclcmds.c,v retrieving revision 1.58 retrieving revision 1.59 diff -C2 -d -r1.58 -r1.59 *** tclcmds.c 16 Jul 2011 09:25:30 -0000 1.58 --- tclcmds.c 16 Jul 2011 09:36:09 -0000 1.59 *************** *** 379,382 **** --- 379,383 ---- {"ns_returnredirect", NULL, NsTclReturnRedirectObjCmd}, {"ns_returnunauthorized", NULL, NsTclReturnUnauthorizedObjCmd}, + {"ns_returntoolarge", NULL, NsTclReturnTooLargeObjCmd}, {"ns_rmdir", NULL, NsTclRmdirObjCmd}, {"ns_rollfile", NULL, NsTclRollFileObjCmd}, |
From: gustafn <gne...@us...> - 2011-07-16 09:25:33
|
Update of /cvsroot/aolserver/aolserver/nsd In directory vz-cvs-4.sog:/tmp/cvs-serv14196 Modified Files: op.c tclcmds.c tclresp.c Log Message: - added support for redirect, when upload file is too large (many thanks to Brian Fenton) Index: tclcmds.c =================================================================== RCS file: /cvsroot/aolserver/aolserver/nsd/tclcmds.c,v retrieving revision 1.57 retrieving revision 1.58 diff -C2 -d -r1.57 -r1.58 *** tclcmds.c 8 Dec 2009 04:12:19 -0000 1.57 --- tclcmds.c 16 Jul 2011 09:25:30 -0000 1.58 *************** *** 149,152 **** --- 149,153 ---- NsTclReturnObjCmd, NsTclReturnRedirectObjCmd, + NsTclReturnTooLargeObjCmd, NsTclReturnUnauthorizedObjCmd, NsTclRmdirObjCmd, Index: op.c =================================================================== RCS file: /cvsroot/aolserver/aolserver/nsd/op.c,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** op.c 9 Jul 2011 10:06:46 -0000 1.16 --- op.c 16 Jul 2011 09:25:29 -0000 1.17 *************** *** 235,238 **** --- 235,239 ---- if (connPtr->flags & NS_CONN_ENTITYTOOLARGE) { + connPtr->flags &= ~NS_CONN_ENTITYTOOLARGE; return Ns_ConnReturnEntityTooLarge(conn); } Index: tclresp.c =================================================================== RCS file: /cvsroot/aolserver/aolserver/nsd/tclresp.c,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** tclresp.c 22 Jan 2007 03:23:15 -0000 1.21 --- tclresp.c 16 Jul 2011 09:25:30 -0000 1.22 *************** *** 445,453 **** * ReturnObjCmd -- * NsTclReturnNotFoundObjCmd -- * NsTclReturnUnauthorizedObjCmd -- * NsTclReturnForbiddenCmd -- * ! * Implement the ns_returnnotfound, ns_returnunauthorized, and ! * ns_returnforbidden generic return commands. * * Results: --- 445,455 ---- * ReturnObjCmd -- * NsTclReturnNotFoundObjCmd -- + * NsTclReturnTooLargeObjCmd -- * NsTclReturnUnauthorizedObjCmd -- * NsTclReturnForbiddenCmd -- * ! * Implement the ns_returnnotfound, ns_returntoolarge, ! * ns_returnunauthorized, and ns_returnforbidden generic return ! * commands. * * Results: *************** *** 487,490 **** --- 489,500 ---- int + NsTclReturnTooLargeObjCmd(ClientData arg, Tcl_Interp *interp, int objc, + Tcl_Obj *CONST objv[]) + { + return ReturnObjCmd(arg, interp, objc, objv, Ns_ConnReturnEntityTooLarge); + } + + + int NsTclReturnUnauthorizedObjCmd(ClientData arg, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) |
From: gustafn <gne...@us...> - 2011-07-09 11:05:39
|
Update of /cvsroot/aolserver/nspostgres In directory vz-cvs-4.sog:/tmp/cvs-serv32137 Modified Files: Tag: nspostgres_v4_r2 ChangeLog Log Message: Updating Changelog Index: ChangeLog =================================================================== RCS file: /cvsroot/aolserver/nspostgres/ChangeLog,v retrieving revision 1.32 retrieving revision 1.32.2.1 diff -C2 -d -r1.32 -r1.32.2.1 *** ChangeLog 13 Jun 2007 22:38:55 -0000 1.32 --- ChangeLog 9 Jul 2011 11:05:37 -0000 1.32.2.1 *************** *** 1,3 **** ! 2007-06-12 tag nspostgres_v4_r1 2007-06-12 Dossy Shiobara <do...@pa...> --- 1,9 ---- ! 2011-07-09 Gustaf Neumann <ne...@wu...> ! tag nspostgres_v4_r2 ! ! 2011-07-05 Gustaf Neumann <ne...@wu...> ! * nspostgres.c: using SQL escape string syntax E'...' when needed (required in PostgreSql 9.1) ! * nspostgres.c: cleanup to get rid of compilation warnings ! * Makefile: add -lnsdb to the libraries 2007-06-12 Dossy Shiobara <do...@pa...> *************** *** 12,16 **** 2007-03-09 Jim Lynch <ji...@ja...> ! * backed out of defaulting POSTGRES var in Makefile; it should print a message if not defined. --- 18,22 ---- 2007-03-09 Jim Lynch <ji...@ja...> ! * backed out of defaulting POSTGRES var in Makefile; it should print a message if not defined. *************** *** 21,25 **** append_PQresultStatus. added allocation responsibility to caller, who now must allocate the string, pass it in, use the result then free the ! string. function docs (in nspostgres.c just above function) altered appropriately. --- 27,31 ---- append_PQresultStatus. added allocation responsibility to caller, who now must allocate the string, pass it in, use the result then free the ! string. function docs (in nspostgres.c just above function) altered appropriately. *************** *** 30,34 **** 2007-02-17 Jim Lynch <ji...@ja...> * factor: ! we want to add the PQexec result status code to a string, so we will use a Tcl_DString which is a dynamic string. So, create a function called stringify_PQresultStatus which returns pointer --- 36,40 ---- 2007-02-17 Jim Lynch <ji...@ja...> * factor: ! we want to add the PQexec result status code to a string, so we will use a Tcl_DString which is a dynamic string. So, create a function called stringify_PQresultStatus which returns pointer |
From: gustafn <gne...@us...> - 2011-07-09 10:59:08
|
Update of /cvsroot/aolserver/nspostgres In directory vz-cvs-4.sog:/tmp/cvs-serv30405 Modified Files: ChangeLog Log Message: - updated README file Index: ChangeLog =================================================================== RCS file: /cvsroot/aolserver/nspostgres/ChangeLog,v retrieving revision 1.32 retrieving revision 1.33 diff -C2 -d -r1.32 -r1.33 *** ChangeLog 13 Jun 2007 22:38:55 -0000 1.32 --- ChangeLog 9 Jul 2011 10:59:05 -0000 1.33 *************** *** 1,3 **** ! 2007-06-12 tag nspostgres_v4_r1 2007-06-12 Dossy Shiobara <do...@pa...> --- 1,9 ---- ! 2011-07-09 Gustaf Neumann <ne...@wu...> ! tag nspostgres_v4_r2 ! ! 2011-07-05 Gustaf Neumann <ne...@wu...> ! * nspostgres.c: using SQL escape string syntax E'...' when needed (required in PostgreSql 9.1) ! * nspostgres.c: cleanup to get rid of compilation warnings ! * Makefile: add -lnsdb to the libraries 2007-06-12 Dossy Shiobara <do...@pa...> *************** *** 12,16 **** 2007-03-09 Jim Lynch <ji...@ja...> ! * backed out of defaulting POSTGRES var in Makefile; it should print a message if not defined. --- 18,22 ---- 2007-03-09 Jim Lynch <ji...@ja...> ! * backed out of defaulting POSTGRES var in Makefile; it should print a message if not defined. *************** *** 21,25 **** append_PQresultStatus. added allocation responsibility to caller, who now must allocate the string, pass it in, use the result then free the ! string. function docs (in nspostgres.c just above function) altered appropriately. --- 27,31 ---- append_PQresultStatus. added allocation responsibility to caller, who now must allocate the string, pass it in, use the result then free the ! string. function docs (in nspostgres.c just above function) altered appropriately. *************** *** 30,34 **** 2007-02-17 Jim Lynch <ji...@ja...> * factor: ! we want to add the PQexec result status code to a string, so we will use a Tcl_DString which is a dynamic string. So, create a function called stringify_PQresultStatus which returns pointer --- 36,40 ---- 2007-02-17 Jim Lynch <ji...@ja...> * factor: ! we want to add the PQexec result status code to a string, so we will use a Tcl_DString which is a dynamic string. So, create a function called stringify_PQresultStatus which returns pointer |
From: gustafn <gne...@us...> - 2011-07-09 10:06:49
|
Update of /cvsroot/aolserver/aolserver/nsd In directory vz-cvs-4.sog:/tmp/cvs-serv14239/nsd Modified Files: driver.c op.c return.c Log Message: - move the handling of "Entity too large" to the connection threads - make sure to process the whole request from the client, even when the entity is too large - change spelling of error stub to Ns_ConnReturnEntityTooLarge - removed superflous newline in SockState Index: return.c =================================================================== RCS file: /cvsroot/aolserver/aolserver/nsd/return.c,v retrieving revision 1.51 retrieving revision 1.52 diff -C2 -d -r1.51 -r1.52 *** return.c 23 Jun 2011 18:15:16 -0000 1.51 --- return.c 9 Jul 2011 10:06:46 -0000 1.52 *************** *** 1062,1066 **** *---------------------------------------------------------------------- * ! * Ns_ConnReturnEntityToLarge -- * * Return a 414 Request Entity to large response. --- 1062,1066 ---- *---------------------------------------------------------------------- * ! * Ns_ConnReturnEntityTooLarge -- * * Return a 414 Request Entity to large response. *************** *** 1076,1080 **** int ! Ns_ConnReturnEntityToLarge(Ns_Conn *conn) { int result; --- 1076,1080 ---- int ! Ns_ConnReturnEntityTooLarge(Ns_Conn *conn) { int result; Index: op.c =================================================================== RCS file: /cvsroot/aolserver/aolserver/nsd/op.c,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** op.c 7 Oct 2005 00:48:23 -0000 1.15 --- op.c 9 Jul 2011 10:06:46 -0000 1.16 *************** *** 231,234 **** --- 231,242 ---- /* + * Return entity too large error message + */ + + if (connPtr->flags & NS_CONN_ENTITYTOOLARGE) { + return Ns_ConnReturnEntityTooLarge(conn); + } + + /* * Prevent infinite internal redirect loops. */ Index: driver.c =================================================================== RCS file: /cvsroot/aolserver/aolserver/nsd/driver.c,v retrieving revision 1.61 retrieving revision 1.62 diff -C2 -d -r1.61 -r1.62 *** driver.c 24 Jun 2011 06:46:32 -0000 1.61 --- driver.c 9 Jul 2011 10:06:46 -0000 1.62 *************** *** 1482,1486 **** { if (sockPtr->drvPtr->flags & DRIVER_DEBUG) { ! Ns_Log(Notice, "%s[%d]: %s -> %s\n", sockPtr->drvPtr->name, sockPtr->sock, states[sockPtr->state], states[state]); } --- 1482,1486 ---- { if (sockPtr->drvPtr->flags & DRIVER_DEBUG) { ! Ns_Log(Notice, "%s[%d]: %s -> %s", sockPtr->drvPtr->name, sockPtr->sock, states[sockPtr->state], states[state]); } *************** *** 1750,1757 **** } LogReadError(connPtr, err); - if (err == E_CRANGE) { - Ns_ConnReturnEntityToLarge(connPtr); - NsRunTraces(connPtr); - } } } --- 1750,1753 ---- *************** *** 1973,1977 **** } if (len > (int) connPtr->limitsPtr->maxupload) { ! return E_CRANGE; } connPtr->contentLength = len; --- 1969,1989 ---- } if (len > (int) connPtr->limitsPtr->maxupload) { ! /* ! * Gustaf Neumann: The entity is too large and is not allowed to ! * be processed. In principle, we could stop processing the ! * request here and return immediately an error message to the ! * client. However, if the content to be sent from the client to ! * the server is large it is likely, that at the time we process ! * the header, the content is not fully sent yet. If the server ! * replies and closes the connection while the client is sending ! * the request, current browsers (e.g. Firefox, Chrome, ...) ! * will show the user their own error message ("server has ! * closed connection"). Therefore, in order to provide reliable ! * error messages, we have process the full request. We flag the ! * fact of the too large entity here and return the error ! * message from the connection thread. ! */ ! connPtr->flags |= NS_CONN_ENTITYTOOLARGE; ! LogReadError(connPtr, E_CRANGE); } connPtr->contentLength = len; |
From: gustafn <gne...@us...> - 2011-07-09 10:06:48
|
Update of /cvsroot/aolserver/aolserver/include In directory vz-cvs-4.sog:/tmp/cvs-serv14239/include Modified Files: ns.h Log Message: - move the handling of "Entity too large" to the connection threads - make sure to process the whole request from the client, even when the entity is too large - change spelling of error stub to Ns_ConnReturnEntityTooLarge - removed superflous newline in SockState Index: ns.h =================================================================== RCS file: /cvsroot/aolserver/aolserver/include/ns.h,v retrieving revision 1.90 retrieving revision 1.91 diff -C2 -d -r1.90 -r1.91 *** ns.h 23 Jun 2011 18:15:16 -0000 1.90 --- ns.h 9 Jul 2011 10:06:46 -0000 1.91 *************** *** 88,91 **** --- 88,92 ---- #define NS_CONN_GZIP 0x800 #define NS_CONN_CHUNK 0x1000 + #define NS_CONN_ENTITYTOOLARGE 0x2000 #define NS_CONN_MAXCLS 16 *************** *** 1044,1048 **** NS_EXTERN int Ns_ConnReturnBadRequest(Ns_Conn *conn, char *reason); NS_EXTERN int Ns_ConnReturnUnauthorized(Ns_Conn *conn); ! NS_EXTERN int Ns_ConnReturnEntityToLarge(Ns_Conn *conn); NS_EXTERN int Ns_ConnReturnForbidden(Ns_Conn *conn); NS_EXTERN int Ns_ConnReturnNotFound(Ns_Conn *conn); --- 1045,1049 ---- NS_EXTERN int Ns_ConnReturnBadRequest(Ns_Conn *conn, char *reason); NS_EXTERN int Ns_ConnReturnUnauthorized(Ns_Conn *conn); ! NS_EXTERN int Ns_ConnReturnEntityTooLarge(Ns_Conn *conn); NS_EXTERN int Ns_ConnReturnForbidden(Ns_Conn *conn); NS_EXTERN int Ns_ConnReturnNotFound(Ns_Conn *conn); |
From: gustafn <gne...@us...> - 2011-07-05 18:45:37
|
Update of /cvsroot/aolserver/nspostgres In directory vz-cvs-4.sog:/tmp/cvs-serv25890 Modified Files: Makefile nspostgres.c Log Message: - using SQL escape string syntax E'...' when needed (required in PostgreSql 9.1) - minor cleanup to get rid of compilation warnings - adding -lnsdb to the libraries in the Makefile Index: Makefile =================================================================== RCS file: /cvsroot/aolserver/nspostgres/Makefile,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** Makefile 12 Jun 2007 15:17:45 -0000 1.21 --- Makefile 5 Jul 2011 18:45:35 -0000 1.22 *************** *** 93,97 **** # Libraries required by this module # ! MODLIBS += -L$(PGLIB) -lpq # --- 93,97 ---- # Libraries required by this module # ! MODLIBS += -L$(PGLIB) -lpq -lnsdb # Index: nspostgres.c =================================================================== RCS file: /cvsroot/aolserver/nspostgres/nspostgres.c,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** nspostgres.c 25 Feb 2007 09:45:32 -0000 1.15 --- nspostgres.c 5 Jul 2011 18:45:35 -0000 1.16 *************** *** 909,913 **** n = byte_len; for (i=0, j=0; n > 0; i += 4, j += 3, n -= 3) { ! decode3(&data_column[i], &buf[j], n); } buf[byte_len] = '\0'; --- 909,913 ---- n = byte_len; for (i=0, j=0; n > 0; i += 4, j += 3, n -= 3) { ! decode3((unsigned char*)&data_column[i], &buf[j], n); } buf[byte_len] = '\0'; *************** *** 981,985 **** value_len -= segment_len; for (i = 0, j = 0; i < segment_len; i += 3, j+=4) { ! encode3(&value_ptr[i], &out_buf[j]); } out_buf[j] = '\0'; --- 981,985 ---- value_len -= segment_len; for (i = 0, j = 0; i < segment_len; i += 3, j+=4) { ! encode3((unsigned char *)&value_ptr[i], &out_buf[j]); } out_buf[j] = '\0'; *************** *** 1047,1051 **** while (readlen > 0) { for (i = 0, j = 0; i < readlen; i += 3, j+=4) { ! encode3(&in_buf[i], &out_buf[j]); } out_buf[j] = '\0'; --- 1047,1051 ---- while (readlen > 0) { for (i = 0, j = 0; i < readlen; i += 3, j+=4) { ! encode3((unsigned char *)&in_buf[i], &out_buf[j]); } out_buf[j] = '\0'; *************** *** 1182,1186 **** n = byte_len; for (i=0, j=0; n > 0; i += 4, j += 3, n -= 3) { ! decode3(&data_column[i], &buf[j], n); } --- 1182,1186 ---- n = byte_len; for (i=0, j=0; n > 0; i += 4, j += 3, n -= 3) { ! decode3((unsigned char *)&data_column[i], &buf[j], n); } *************** *** 1362,1366 **** string_list_elt_t *felt, *fhead=0, *ftail=0; int current_string_length = 0; - int first_bind = 0; fragbuf = (char*)Ns_Malloc((strlen(input)+1)*sizeof(char)); --- 1362,1365 ---- *************** *** 1478,1482 **** char *value = NULL; char *p; - int value_frag_len = 0; if (argc < 4 || (!STREQ("-bind", argv[3]) && (argc != 4)) || --- 1477,1480 ---- *************** *** 1564,1567 **** --- 1562,1577 ---- Ns_DStringAppend(&ds, "NULL"); } else { + int needEscapeStringSyntax = 0; + + /* + * Determine, if we need the SQL escape string Syntax E'...' + */ + for (p = value; *p; p++) { + if (*p == '\\') { + needEscapeStringSyntax = 1; + break; + } + } + /* * DRB: We really only need to quote strings, but there is one benefit *************** *** 1572,1576 **** * still used when appropriate. */ ! Ns_DStringAppend(&ds, "'"); /* --- 1582,1586 ---- * still used when appropriate. */ ! Ns_DStringAppend(&ds, needEscapeStringSyntax ? "E'" : "'"); /* *************** *** 1598,1602 **** } ! Ns_DStringAppend(&ds, "'"); } var_p = var_p->next; --- 1608,1612 ---- } ! Ns_DStringAppend(&ds, "'"); } var_p = var_p->next; |
From: gustafn <gne...@us...> - 2011-07-05 18:37:49
|
Update of /cvsroot/aolserver/aolserver/nsd In directory vz-cvs-4.sog:/tmp/cvs-serv24128 Modified Files: queue.c server.c tclcache.c tclmisc.c uuencode.c Log Message: - reverting escaped commit Index: tclmisc.c =================================================================== RCS file: /cvsroot/aolserver/aolserver/nsd/tclmisc.c,v retrieving revision 1.33 retrieving revision 1.34 diff -C2 -d -r1.33 -r1.34 *** tclmisc.c 5 Jul 2011 18:24:40 -0000 1.33 --- tclmisc.c 5 Jul 2011 18:37:47 -0000 1.34 *************** *** 366,374 **** return TCL_ERROR; } ! string = Tcl_GetString(objv[1]); ! nbytes = objv[1]->length; ! fprintf(stderr, "STRANGE %d %d\n",(unsigned char)string[0],(unsigned char)string[1]); ! /* string = Tcl_GetStringFromObj(objv[1], &nbytes);*/ ! if (nbytes > 48) { Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), "invalid string \"", --- 366,370 ---- return TCL_ERROR; } ! string = Tcl_GetStringFromObj(objv[1], &nbytes); if (nbytes > 48) { Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), "invalid string \"", Index: tclcache.c =================================================================== RCS file: /cvsroot/aolserver/aolserver/nsd/tclcache.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** tclcache.c 5 Jul 2011 18:24:40 -0000 1.4 --- tclcache.c 5 Jul 2011 18:37:47 -0000 1.5 *************** *** 189,194 **** cachePtr = objv[2]->internalRep.otherValuePtr; - //fprintf(stderr,"CACHE %s %s\n",Tcl_GetString(objv[1]),Tcl_GetString(objv[2])); - Ns_GetTime(&now); err = 0; --- 189,192 ---- *************** *** 505,511 **** } cache = Tcl_GetString(objv[2]); - - //fprintf(stderr,"CACHE create %s\n",cache); - wait.sec = 2; ttl.sec = 60; --- 503,506 ---- Index: queue.c =================================================================== RCS file: /cvsroot/aolserver/aolserver/nsd/queue.c,v retrieving revision 1.48 retrieving revision 1.49 diff -C2 -d -r1.48 -r1.49 *** queue.c 5 Jul 2011 18:24:40 -0000 1.48 --- queue.c 5 Jul 2011 18:37:47 -0000 1.49 *************** *** 556,639 **** */ - /* - *---------------------------------------------------------------------- - * - * ConnAuthorize -- - * - * Try to authorize a connection. - * - * Results: - * NS_OK on successful authorization, - * NS_FILTER_RETURN on authorization failure, or - * NS_ERROR on error. - * - * Side effects: - * Connection request is authorized. On failure an alternative - * response may be sent to the client. - * - *---------------------------------------------------------------------- - */ - - static int - ConnAuthorize(Conn *connPtr) - { - Ns_Conn *conn = (Ns_Conn *) connPtr; - NsServer *servPtr = connPtr->servPtr; - int status; - - status = Ns_AuthorizeRequest(servPtr->server, - connPtr->request->method, connPtr->request->url, - connPtr->authUser, connPtr->authPasswd, connPtr->peer); - - switch (status) { - case NS_OK: - break; - case NS_FORBIDDEN: - /* - * NS_OK indicates that a response was sent to the client - * a this point, we must fast-forward to traces, - * so we convert the NS_OK to NS_FILTER_RETURN. - */ - if ((status = Ns_ConnReturnForbidden(conn)) == NS_OK) { - status = NS_FILTER_RETURN; - } - break; - case NS_UNAUTHORIZED: - /* - * NS_OK indicates that a response was sent to the client - * a this point, we must fast-forward to traces, - * so we convert the NS_OK to NS_FILTER_RETURN. - */ - if ((status = Ns_ConnReturnUnauthorized(conn)) == NS_OK) { - status = NS_FILTER_RETURN; - } - break; - case NS_ERROR: - default: - status = NS_ERROR; - break; - } - - return status; - } - - - /* - *---------------------------------------------------------------------- - * - * ConnRun -- - * - * Run a valid connection. - * - * Results: - * None. - * - * Side effects: - * Connection request is read and parsed and the cooresponding - * service routine is called. - * - *---------------------------------------------------------------------- - */ - static void ConnRun(Conn *connPtr) --- 556,559 ---- *************** *** 670,749 **** */ ! while (1) { ! ! /* ! * Proxy requests replace request logic ! */ ! ! if (connPtr->request->protocol != NULL ! && connPtr->request->host != NULL) { ! ! status = NsConnRunProxyRequest((Ns_Conn *) connPtr); ! break; ! } ! ! /* ! * Each stage of request processing can return one of three ! * possible results: ! * NS_OK means continue to next stage ! * NS_FILTER_RETURN means skip to traces ! * NS_ERROR means skip to 500 response attempt ! */ ! status = NsRunFilters(conn, NS_FILTER_PRE_AUTH); ! if (status != NS_OK) { ! break; ! } ! status = ConnAuthorize(connPtr); ! if (status != NS_OK) { ! break; ! } ! status = NsRunFilters(conn, NS_FILTER_POST_AUTH); ! if (status != NS_OK) { ! break; } - - status = Ns_ConnRunRequest(conn); - break; } - - if (status == NS_ERROR) { - status = Ns_ConnReturnInternalError(conn); - } - - /* - * Closing connection also runs code registered with - * ns_atclose. - */ - Ns_ConnClose(conn); - - /* - * Trace filters, void filter traces and server traces - * run a response was sent to the client - * Note that a successful response includes sending - * an internal server error response. - */ - if (status == NS_OK || status == NS_FILTER_RETURN) { ! /* ! * Filter Traces are registered with ns_register_filter ! * Ignore the return code? We need to do NsRunTraces based ! * upon status before trace filters ran. Question is if we ! * should skip void trace filters. We could wrap them in another ! * status check, then move on to NsRunTraces. ! */ ! NsRunFilters(conn, NS_FILTER_TRACE); ! /* ! * Filters registered outside the context of a particular server ! */ ! (void) NsRunFilters(conn, NS_FILTER_VOID_TRACE); ! /* ! * Server traces registered with Ns_RegisterServerTrace ! * Access logging is handled at this point. ! */ ! NsRunTraces(conn); } --- 590,639 ---- */ ! if (connPtr->request->protocol != NULL && connPtr->request->host != NULL) { ! status = NsConnRunProxyRequest((Ns_Conn *) connPtr); ! } else { ! status = NsRunFilters(conn, NS_FILTER_PRE_AUTH); ! if (status == NS_OK) { ! status = Ns_AuthorizeRequest(servPtr->server, ! connPtr->request->method, connPtr->request->url, ! connPtr->authUser, connPtr->authPasswd, connPtr->peer); ! switch (status) { ! case NS_OK: ! status = NsRunFilters(conn, NS_FILTER_POST_AUTH); ! if (status == NS_OK) { ! status = Ns_ConnRunRequest(conn); ! } ! break; ! case NS_FORBIDDEN: ! Ns_ConnReturnForbidden(conn); ! break; ! case NS_UNAUTHORIZED: ! Ns_ConnReturnUnauthorized(conn); ! break; ! case NS_ERROR: ! default: ! Ns_ConnReturnInternalError(conn); ! break; ! } ! } else if (status != NS_FILTER_RETURN) { ! /* if not ok or filter_return, then the pre-auth filter coughed ! * an error. We are not going to proceed, but also we ! * can't count on the filter to have sent a response ! * back to the client. So, send an error response. ! */ ! Ns_ConnReturnInternalError(conn); ! status = NS_FILTER_RETURN; /* to allow tracing to happen */ } } Ns_ConnClose(conn); if (status == NS_OK || status == NS_FILTER_RETURN) { ! status = NsRunFilters(conn, NS_FILTER_TRACE); ! if (status == NS_OK) { ! (void) NsRunFilters(conn, NS_FILTER_VOID_TRACE); ! NsRunTraces(conn); ! } } *************** *** 752,770 **** * followed by free the connection interp if it was used. */ - - /* - * Cleanups are registered with either: - * Ns_RegisterConnCleanup: same signature as Ns_RegisterServerTrace - * Ns_RegisterCleanup: runs for all servers - */ NsRunCleanups(conn); - - /* Finished with conn */ - NsFreeConnInterp(connPtr); } - /* --- 642,650 ---- Index: server.c =================================================================== RCS file: /cvsroot/aolserver/aolserver/nsd/server.c,v retrieving revision 1.48 retrieving revision 1.49 diff -C2 -d -r1.48 -r1.49 *** server.c 5 Jul 2011 18:24:40 -0000 1.48 --- server.c 5 Jul 2011 18:37:47 -0000 1.49 *************** *** 298,301 **** --- 298,302 ---- * is no encoding, i.e., assume UTF-8. */ + GetCharsetEncoding(path, "urlcharset", NULL, &servPtr->urlEncoding); Index: uuencode.c =================================================================== RCS file: /cvsroot/aolserver/aolserver/nsd/uuencode.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** uuencode.c 5 Jul 2011 18:24:40 -0000 1.3 --- uuencode.c 5 Jul 2011 18:37:47 -0000 1.4 *************** *** 111,130 **** p = input; ! q = (unsigned char*)output; for (n = len / 3; n > 0; --n) { *q++ = ENC(p[0] >> 2); - fprintf(stderr,"1 (%d) %d\n",p[0] >> 2, p[0]); - *q++ = ENC(((p[0] & 0x03) << 4) | ((p[1] & 0xf0) >> 4)); - fprintf(stderr,"2 (%d) %d %d\n",(((p[0] & 0x03) << 4) | ((p[1] & 0xf0) >> 4)), p[0], p[1]); - *q++ = ENC(((p[1] & 0x0f) << 2) | ((p[2] & 0xc0) >> 6)); - fprintf(stderr,"3 (%d) %d %d\n",(((p[1] & 0x0f) << 2) | ((p[2] & 0xc0) >> 6)), p[1], p[2]); - *q++ = ENC(p[2] & 0x3f); - fprintf(stderr,"4 (%d) %d\n",(p[2] & 0x3f),p[2]); - - /* *q++ = ENC(((p[0] << 4) & 060) | ((p[1] >> 4) & 017)); *q++ = ENC(((p[1] << 2) & 074) | ((p[2] >> 6) & 03)); *q++ = ENC(p[2] & 077); - */ p += 3; } --- 111,120 ---- p = input; ! q = output; for (n = len / 3; n > 0; --n) { *q++ = ENC(p[0] >> 2); *q++ = ENC(((p[0] << 4) & 060) | ((p[1] >> 4) & 017)); *q++ = ENC(((p[1] << 2) & 074) | ((p[2] >> 6) & 03)); *q++ = ENC(p[2] & 077); p += 3; } *************** *** 138,146 **** *q++ = ENC(p[0] >> 2); if (n == 1) { ! *q++ = ENC(((p[0] & 0x03) << 4)); *q++ = '='; } else { ! *q++ = ENC(((p[0] & 0x03) << 4) | ((p[1] & 0xf0) >> 4)); ! *q++ = ENC(((p[1] & 0x0f) << 2)); } *q++ = '='; --- 128,136 ---- *q++ = ENC(p[0] >> 2); if (n == 1) { ! *q++ = ENC((p[0] << 4) & 060); *q++ = '='; } else { ! *q++ = ENC(((p[0] << 4) & 060) | ((p[1] >> 4) & 017)); ! *q++ = ENC((p[1] << 2) & 074); } *q++ = '='; |