Hi James, > Each side would be a separate NetVConnection.
Yes, Each side is a separate NetVC and Socket FD, thus every side has client and server. for Client Side Context: 1. if no transparent enabled: get_client_addr() = get_remote_addr() is client ip address. get_server_addr() = get_local_addr() is ATS service ip address. 2. if tr-in or tr-full enabled: get_client_addr() = get_remote_addr() is client ip address. get_server_addr() = get_local_addr() is original server ip address. get_client_addr() always return client ip address in Client Side Context but get_server_addr() not. for Server Side Context: 1. if no transparent enabled: get_client_addr() = get_local_addr() is ATS service ip address. get_server_addr() = get_remote_addr() is original server ip address. 2. if tr-out or tr-full enabled: get_client_addr() = get_local_addr() is client ip address. get_server_addr() = get_remote_addr() is original server ip address. get_server_addr() always return original server ip address in Server Side Context but get_client_addr() not. > What problem is this solving? I can see that it would work, but would it noticeably clarify anything? 1. reduce memory space used by NetVConnection. (by remove member server_addr) 2. it is a wrap to get_local_addr() and get_remote_addr() 3. NetVConnection Context is used to mark a NetVC direction / situation, it is friendly in Proxy SM design for HttpSM, SpdySM and H2SM. 4. more clearly to get client/oserver ip address: we can call CliNetVC->get_client_addr() if we want get client ip in a server side. we can call SvrNetVC->get_server_addr() if we want get original server ip in a client side. 2016-04-25 4:18 GMT+08:00 James Peach <jpe...@apache.org>: > > > On Apr 22, 2016, at 7:28 PM, Chao Xu <xuc...@gmail.com> wrote: > > > > As a proxy, there has two side: client side ( Client <-> Proxy ) and > server > > side ( Proxy <-> Server ). > > Each side would be a separate NetVConnection. > > > Add a new member 'netvc_context' into class NetVConnection to indicate > > which side the NetVC working on. > > > > And remove member 'server_addr' from UnixNetVConnection: > > > > {code} > > 246 // amc - what is this for? Why not use remote_addr or con.addr? > > 247 IpEndpoint server_addr; /// Server address and port. > > {code} > > It looks to me that “server_addr” is set when you connect(2) an outbound > vc. I think I agree with Alan’s comment that this should probably be > get_remote_addr(). > > > implement new methods get_client_addr() and get_server_addr() on > > NetVConnection to instead server_addr. these two methods could get the > > right server/client address value by get_local_addr() or > get_remote_addr() > > depend on netvc_context. > > What problem is this solving? I can see that it would work, but would it > noticeably clarify anything? > > J