Re: /bzr/squid3/trunk/ r11499: Upgrade comm layer Connection handling

From: Alex Rousskov <rousskov_at_measurement-factory.com>
Date: Tue, 21 Jun 2011 10:29:27 -0600

On 06/21/2011 06:09 AM, Amos Jeffries wrote:
> On 21/06/11 21:46, Tsantilas Christos wrote:
>> On 06/19/2011 05:19 AM, Amos Jeffries wrote:
>>> Comm no longer contains implicit DNS resolution. It needs to be given
>>> the remote IP address before opening.
>>
>>> Since ServiceRep::getConnection() is strictly synchronous and assumes
>>> that there is only one IP for the service.
>>>
>>> Xaction::openConnection() can become async so now contains:
>>> "TODO: find the IPs and attempt each one if this is a named service"
>>> marks the spot.
>>>
>>> For now it converts IP-addressed services using raw-IP text conversion
>>> "remote= s.cfg().host.termedBuf()". Which is synchronous and
>>> non-blocking but not resolving FQDN.
>>>
>>> When FQDN resolution is required do we ...
>>>
>>> a) split openConnection() into two async steps and only use one of the
>>> possibly multiple IPs returned?
>>>
>>> OR
>>>
>>> b) lookup the DNS at some far earlier point and store the IPA in
>>> ServiceRep for some sort of load balancing selection of just one by
>>> getConnection()?
>>>
>
> This just needs:
> openConnection step 1 to call ipcache_nbgethostbyname()
> openConnection step 2 to do something similar to
> src/peer_select.cc:peerSelectDnsResults() but tuned a bit for ICAP.

For a complete fix, we also need to modify the callers to handle a
two-step (i.e., async) openConnection(). AFAICT, both callers call
openConnection() at the end of an already async call, so it is not a
major problem, just more work.

Thank you,

Alex.
Received on Tue Jun 21 2011 - 16:30:36 MDT

This archive was generated by hypermail 2.2.0 : Thu Jun 23 2011 - 12:00:04 MDT