ostream& operator<<(ostream& os, const Peer& p) { /// when NTP implemented, change to just nTime = GetAdjustedTime() int64_t nTime = (p._inbound ? GetAdjustedTime() : UnixTime::s()); // Endpoint remote = _socket.remote_endpoint(); Endpoint local = p._socket.local_endpoint(); Endpoint addrYou = (p._proxy ? Endpoint("0.0.0.0") : p.addr); Endpoint addrMe = (p._proxy ? Endpoint("0.0.0.0") : local); // hack to avoid serializing the time if (p._version) os << const_binary<int>(p._version); else // not initialized - we assume we are sending the version info os << const_binary<int>(p._chain.protocol_version()); os << const_binary<uint64_t>(NODE_NETWORK) << const_binary<int64_t>(nTime); os << const_binary<uint64_t>(addrYou.getServices()) << const_binary<boost::asio::ip::address_v6::bytes_type>(addrYou.getIPv6()) << const_binary<unsigned short>(htons(addrYou.port())); os << const_binary<uint64_t>(addrMe.getServices()) << const_binary<boost::asio::ip::address_v6::bytes_type>(addrMe.getIPv6()) << const_binary<unsigned short>(htons(addrMe.port())); os << const_binary<uint64_t>(p._nonce) << const_varstr(p._sub_version); os << const_binary<int>(p._peerManager.getBestHeight()); os << const_binary<bool>(true); return os; }