veyron/runtimes/google/ipc/...: Proxy improvements.

(1) The proxy explicitly communicates the external endpoint for a proxied server.
The previous scheme of having the server derive the endpoint from the address
used to connect to the proxy was flawed as it didn't allow for the possibility
of different network addresses being used to connect to the proxy and to connect
*through* the proxy. (For example, a proxy server might be running on your
local network and servers would connect to it at say 192.168.1.1, while external
clients will connect to it through the public IP of the proxy)

(2) Reconnection to a proxy is now done at by ipc.Server instead of
stream.Manager.Listener. Two improvements as a result of this:
  (a) As soon as the proxy connection dies, the server unmounts the
      (unusable) proxied address.
  (b) If the proxy address is itself a veyron name, then the name gets
      resolved to an endpoint every time a reconnect happens.
      This allows for the proxy servers to physically move around.

Change-Id: I7f23f3ff784b82e0429c0efe87c23eebd9127983
9 files changed
tree: 81a2d4023645582865a1fc5cef7278fe46f089bb
  1. examples/
  2. lib/
  3. runtimes/
  4. security/
  5. services/
  6. tools/