The attached patch fixes ns_adp_break, it differs from the previous patch by one line in adpeval.c
tom jackson On Sat, 2009-04-04 at 16:25 -0500, Andrew Steets wrote: > Hi Tom, > > Attachments seem to work ok on this list. -- AOLserver - http://www.aolserver.com/ To Remove yourself from this list, simply send an email to <lists...@listserv.aol.com> with the body of "SIGNOFF AOLSERVER" in the email message. You can leave the Subject: field of your email blank.
t...@boron:~/cvs/aolserver/aolserver/nsd$ diff -u adpeval.c /web/tnt/aolserver/aolserver/nsd/adpeval.c --- adpeval.c 2008-06-10 17:23:02.000000000 -0700 +++ /web/tnt/aolserver/aolserver/nsd/adpeval.c 2009-04-05 10:43:01.000000000 -0700 @@ -1017,7 +1017,12 @@ break; case ADP_RETURN: itPtr->adp.exception = ADP_OK; - /* FALLTHROUGH */ + result = TCL_OK; + break; + case ADP_ABORT: + case ADP_BREAK: + result = TCL_ERROR; + break; default: result = TCL_OK; break; t...@boron:~/cvs/aolserver/aolserver/nsd$ diff -u adprequest.c /web/tnt/aolserver/aolserver/nsd/adprequest.c --- adprequest.c 2008-06-10 17:23:02.000000000 -0700 +++ /web/tnt/aolserver/aolserver/nsd/adprequest.c 2009-04-04 09:33:00.000000000 -0700 @@ -154,9 +154,15 @@ result = NsAdpInclude(itPtr, 2, objv, start, ttlPtr); Tcl_DecrRefCount(objv[0]); Tcl_DecrRefCount(objv[1]); - if (NsAdpFlush(itPtr, 0) != TCL_OK || result != TCL_OK) { - return NS_ERROR; + if ((result != TCL_OK) && (itPtr->adp.exception == ADP_OK)) { + itPtr->adp.exception = ADP_ABORT; + NsAdpFlush(itPtr, 0); + return NS_ERROR; } + if (NsAdpFlush(itPtr, 0) != TCL_OK) { + return NS_ERROR; + } + return NS_OK; } @@ -216,6 +222,7 @@ Tcl_ResetResult(interp); if (itPtr->adp.exception == ADP_ABORT) { Tcl_SetResult(interp, "adp flush disabled: adp aborted", TCL_STATIC); + result = TCL_OK; } else if (len == 0 && stream) { result = TCL_OK; } else { t...@boron:~/cvs/aolserver/aolserver/nsd$ diff -u queue.c /web/tnt/aolserver/aolserver/nsd/queue.c --- queue.c 2009-04-04 08:43:56.000000000 -0700 +++ /web/tnt/aolserver/aolserver/nsd/queue.c 2009-04-03 16:17:46.000000000 -0700 @@ -595,6 +595,13 @@ status = NsRunFilters(conn, NS_FILTER_POST_AUTH); if (status == NS_OK) { status = Ns_ConnRunRequest(conn); + if (status != NS_OK) { + Ns_ConnReturnInternalError(conn); + status = NS_OK; /* to allow tracing to happen */ + } + } else { + Ns_ConnReturnInternalError(conn); + status = NS_FILTER_RETURN; /* to allow tracing to happen */ } break;