| Index: extensions/browser/api/socket/udp_socket.cc
|
| diff --git a/extensions/browser/api/socket/udp_socket.cc b/extensions/browser/api/socket/udp_socket.cc
|
| index d8f3eae3f4a74cf33b65767d1ab5d081c5e8eac0..42d7bc3e3849fe1dd030c0d713dad53ab6adc4b6 100644
|
| --- a/extensions/browser/api/socket/udp_socket.cc
|
| +++ b/extensions/browser/api/socket/udp_socket.cc
|
| @@ -49,8 +49,16 @@ void UDPSocket::Connect(const std::string& address,
|
| break;
|
| }
|
|
|
| + result = socket_.Open(ip_end_point.GetFamily());
|
| + if (result != net::OK)
|
| + break;
|
| +
|
| result = socket_.Connect(ip_end_point);
|
| - is_connected_ = (result == net::OK);
|
| + if (result != net::OK) {
|
| + socket_.Close();
|
| + break;
|
| + }
|
| + is_connected_ = true;
|
| } while (false);
|
|
|
| callback.Run(result);
|
| @@ -64,7 +72,14 @@ int UDPSocket::Bind(const std::string& address, uint16 port) {
|
| if (!StringAndPortToIPEndPoint(address, port, &ip_end_point))
|
| return net::ERR_INVALID_ARGUMENT;
|
|
|
| - return socket_.Bind(ip_end_point);
|
| + int result = socket_.Open(ip_end_point.GetFamily());
|
| + if (result != net::OK)
|
| + return result;
|
| +
|
| + result = socket_.Bind(ip_end_point);
|
| + if (result != net::OK)
|
| + socket_.Close();
|
| + return result;
|
| }
|
|
|
| void UDPSocket::Disconnect() {
|
|
|