Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(19)

Unified Diff: extensions/browser/api/sockets_tcp_server/sockets_tcp_server_api.cc

Issue 965613002: Open a firewall hole when a TCP server or UDP socket is bound. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased. Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: extensions/browser/api/sockets_tcp_server/sockets_tcp_server_api.cc
diff --git a/extensions/browser/api/sockets_tcp_server/sockets_tcp_server_api.cc b/extensions/browser/api/sockets_tcp_server/sockets_tcp_server_api.cc
index a55d0b5e7383b69b4e90c0aba3e7117aeac57ee9..a4a1dca880b7083bba5b4908454d53f8ea169e8d 100644
--- a/extensions/browser/api/sockets_tcp_server/sockets_tcp_server_api.cc
+++ b/extensions/browser/api/sockets_tcp_server/sockets_tcp_server_api.cc
@@ -176,10 +176,11 @@ bool SocketsTcpServerListenFunction::Prepare() {
return socket_event_dispatcher_ != NULL;
}
-void SocketsTcpServerListenFunction::Work() {
+void SocketsTcpServerListenFunction::AsyncWorkStart() {
ResumableTCPServerSocket* socket = GetTcpSocket(params_->socket_id);
if (!socket) {
error_ = kSocketNotFoundError;
+ AsyncWorkCompleted();
return;
}
@@ -187,6 +188,7 @@ void SocketsTcpServerListenFunction::Work() {
SocketPermissionRequest::TCP_LISTEN, params_->address, params_->port);
if (!SocketsManifestData::CheckRequest(extension(), param)) {
error_ = kPermissionError;
+ AsyncWorkCompleted();
return;
}
@@ -195,16 +197,17 @@ void SocketsTcpServerListenFunction::Work() {
params_->port,
params_->backlog.get() ? *params_->backlog.get() : kDefaultListenBacklog,
&error_);
-
- if (net_result != net::OK)
- error_ = net::ErrorToString(net_result);
-
+ results_ = sockets_tcp_server::Listen::Results::Create(net_result);
if (net_result == net::OK) {
socket_event_dispatcher_->OnServerSocketListen(extension_->id(),
params_->socket_id);
+ } else {
+ error_ = net::ErrorToString(net_result);
+ AsyncWorkCompleted();
+ return;
}
- results_ = sockets_tcp_server::Listen::Results::Create(net_result);
+ OpenFirewallHole(params_->address, params_->socket_id, socket);
}
SocketsTcpServerDisconnectFunction::SocketsTcpServerDisconnectFunction() {}

Powered by Google App Engine
This is Rietveld 408576698