Re: persistent connections and tcp_outgoing_address

From: Francisco Gimeno <kikov@dont-contact.us>
Date: Sun, 25 Feb 2007 13:22:37 +0100

Hello

I think this is finally working:

I think we're missing the client_port parameter, so I have been set that:
------------------------------------
#if LINUX_TPROXY
                    if (orig_request->flags.tproxy) {
                        client_addr = &httpState->request->client_addr;
                    }
#endif
---------> client_addr = &httpState->request->client_addr; <-------
---------> client_port = httpState->request->client_port; <----------
                    /* yes we have to clear all these! */
                    commSetDefer(fd, NULL, NULL);
                    commSetTimeout(fd, -1, NULL, NULL);
                    commSetSelect(fd, COMM_SELECT_READ, NULL, NULL, 0);
#if DELAY_POOLS
                    delayClearNoDelay(fd);
#endif
                    comm_remove_close_handler(fd, httpStateFree, httpState);
                    fwdUnregister(fd, httpState->fwd);
                    if (request->flags.pinned) {
                        pinned = 1;
                    } else if (request->flags.connection_auth &&
request->flags.auth_sent) {
                        pinned = 1;
                    }
                    if (orig_request->pinned_connection && pinned) {
                        clientPinConnection(orig_request->pinned_connection,
fd, orig_request, httpState->peer, request->flag
s.connection_auth);
                    } else if (httpState->peer) {
                        if (httpState->peer->options.originserver)
                            pconnPush(fd, httpState->peer->name,
httpState->peer->http_port, httpState->orig_request->host, c
lient_addr, client_port);
                        else
                            pconnPush(fd, httpState->peer->name,
httpState->peer->http_port, NULL, client_addr, client_port);
                    } else {
                        pconnPush(fd, request->host, request->port, NULL,
client_addr, client_port);
                    }
                    fwdComplete(httpState->fwd);
                    httpState->fd = -1;
                    httpStateFree(fd, httpState);
                } else {
                    fwdComplete(httpState->fwd);
                    comm_close(fd);
                }
            }
-----------------------------------------
Now, I would add a check to know if there exists at least one (or two)
tcp_outgoing_address. This will made compatible tcp_outgoing_address with
persistent_connection. :)

Thanks a lot Henrik!

>
> Not ok... You changed the domain component of the key, not the
> client_addr.. Undo this..
>
> If you look a few lines higher up you find the client_addr assignment.
> It's there you need to make the change. Just removing the tproxy if
> (both the preprocessor one, and the if statement, making it always
> assigned should be fine I think.
>
> client_addr = &httpState->request->client_addr;
>

BR,
Francisco Gimeno

Received on Sun Feb 25 2007 - 05:16:52 MST

This archive was generated by hypermail pre-2.1.9 : Thu Mar 01 2007 - 12:00:02 MST