File tree Expand file tree Collapse file tree 1 file changed +25
-7
lines changed Expand file tree Collapse file tree 1 file changed +25
-7
lines changed Original file line number Diff line number Diff line change @@ -119,16 +119,34 @@ std::u16string TcpChannel::peerAddress() const
119119 if (!socket_.is_open ())
120120 return std::u16string ();
121121
122- asio::ip::address address = socket_.remote_endpoint ().address ();
123- if (address.is_v4 ())
122+ try
124123 {
125- asio::ip::address ipv4_address = address.to_v4 ();
126- return utf16FromLocal8Bit (ipv4_address.to_string ());
124+ asio::ip::address address = socket_.remote_endpoint ().address ();
125+ if (address.is_v4 ())
126+ {
127+ asio::ip::address_v4 ipv4_address = address.to_v4 ();
128+ return utf16FromLocal8Bit (ipv4_address.to_string ());
129+ }
130+ else
131+ {
132+ asio::ip::address_v6 ipv6_address = address.to_v6 ();
133+ if (ipv6_address.is_v4_mapped ())
134+ {
135+ asio::ip::address_v4 ipv4_address =
136+ asio::ip::make_address_v4 (asio::ip::v4_mapped, ipv6_address);
137+ return utf16FromLocal8Bit (ipv4_address.to_string ());
138+ }
139+ else
140+ {
141+ return utf16FromLocal8Bit (ipv6_address.to_string ());
142+ }
143+ }
127144 }
128- else
145+ catch ( const std::error_code& error_code)
129146 {
130- asio::ip::address ipv6_address = address.to_v6 ();
131- return utf16FromLocal8Bit (ipv6_address.to_string ());
147+ LOG (LS_ERROR) << " Unable to get peer address: "
148+ << base::utf16FromLocal8Bit (error_code.message ());
149+ return std::u16string ();
132150 }
133151}
134152
You can’t perform that action at this time.
0 commit comments