rem: if (connPtr->servPtr->opts.hdrcase != Preserve) {
add: if (servPtr->opts.hdrcase != Preserve) {
context: ConnRun(Conn *connPtr){    Ns_Conn 	  *conn = (Ns_Conn *) connPtr;    Tcl_HashEntry *hPtr;    Tcl_HashSearch search;    FormFile	  *filePtr;    int            i, status;    char	  *auth;	    /*     * Re-initialize and run the connection.     */    connPtr->reqPtr = NsGetRequest(connPtr->sockPtr);    if (connPtr->reqPtr == NULL) {	return;    }    connPtr->contentLength = connPtr->reqPtr->length;    connPtr->headers = connPtr->reqPtr->headers;    connPtr->request = connPtr->reqPtr->request;    connPtr->flags = 0;    connPtr->nContentSent = 0;    connPtr->responseStatus = 0;    connPtr->responseLength = 0;    connPtr->recursionCount = 0;    Tcl_DStringInit(&connPtr->queued);    Tcl_InitHashTable(&connPtr->files, TCL_STRING_KEYS);    sprintf(connPtr->idstr, "cns%d", connPtr->id);    connPtr->outputheaders = Ns_SetCreate(NULL);    if (connPtr->request->version < 1.0) {	conn->flags |= NS_CONN_SKIPHDRS;    }    if (connPtr->servPtr->opts.hdrcase != Preserve) {	for (i = 0; i < Ns_SetSize(connPtr->headers); ++i) {    	    if (connPtr->servPtr->opts.hdrcase == ToLower) {		Ns_StrToLower(Ns_SetKey(connPtr->headers, i));	    } else {		Ns_StrToUpper(Ns_SetKey(connPtr->headers, i));	    }	}    }    auth = Ns_SetIGet(connPtr->headers, "authorization");    if (auth != NULL) {	ParseAuth(connPtr, auth);    }    if (conn->request->method && STREQ(conn->request->method, "HEAD")) {	conn->flags |= NS_CONN_SKIPBODY;    }    /*     * Run the request.     */    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(connPtr->servPtr->server,			connPtr->request->method, connPtr->request->url, 			connPtr->authUser, connPtr->authPasswd, connPtr->reqPtr->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;	    }	}    }    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);	}    }    /*     * Perform various garbage collection tasks.  Note     * the order is significant:  The driver freeProc could     * possibly use Tcl and Tcl deallocate callbacks     * could possibly access header and/or request data.     */    NsRunCleanups(conn);    NsClsCleanup(connPtr);    Ns_FreeConnInterp(conn);    if (connPtr->authUser != NULL) {	ns_free(connPtr->authUser);	connPtr->authUser = connPtr->authPasswd = NULL;    }    if (connPtr->query != NULL) {	Ns_SetFree(connPtr->query);	connPtr->query = NULL;    }    hPtr = Tcl_FirstHashEntry(&connPtr->files, &search);    while (hPtr != NULL) {	filePtr = Tcl_GetHashValue(hPtr);	Ns_SetFree(filePtr->hdrs);	ns_free(filePtr);	hPtr = Tcl_NextHashEntry(&search);    }    Tcl_DeleteHashTable(&connPtr->files);    Tcl_DStringFree(&connPtr->queued);    Ns_SetFree(connPtr->outputheaders);    connPtr->outputheaders = NULL;    NsFreeRequest(connPtr->reqPtr);    connPtr->reqPtr = NULL;}