--- /home/markd/conn.c Tue Feb 11 12:41:43 2003 +++ conn.c Mon Feb 10 20:28:21 2003 @@ -438,8 +438,27 @@ char * Ns_ConnPeer(Ns_Conn *conn) { + char *result = NULL; + Conn *connPtr = (Conn *) conn; + Ns_Set *headersPtr; + + // if there's an x-bork-ip header, use that + headersPtr = Ns_ConnHeaders (conn); + if (headersPtr != NULL) { + char *borkIP; + borkIP = Ns_SetIGet (headersPtr, "x-bork-ip"); + if (borkIP != NULL) { + strncpy(connPtr->peerBuf, borkIP, + sizeof(connPtr->peerBuf)-1); + connPtr->peer = connPtr->peerBuf; + Ns_Log (Notice, "BORKIP : using Bork IP: %s", connPtr->peer); + result = connPtr->peer; + goto bailout; + } + } + if (connPtr->peer == NULL) { connPtr->peer = CONN_DRVCALL(conn, peerProc, NULL); if (connPtr->peer != NULL) { @@ -448,7 +467,10 @@ } connPtr->peer = connPtr->peerBuf; } - return connPtr->peer; + Ns_Log (Notice, "BORKIP : using comm driver IP: %s", connPtr->peer); + result = connPtr->peer; +bailout: + return (result); }