Index: net/server/http_server.cc |
diff --git a/net/server/http_server.cc b/net/server/http_server.cc |
index 6c7ee52f31b3ed4c7ae8076cbcf063aec87d1491..a3f25ef911aa0bed72a8fb37352487a98afaf795 100644 |
--- a/net/server/http_server.cc |
+++ b/net/server/http_server.cc |
@@ -4,8 +4,11 @@ |
#include "net/server/http_server.h" |
+#include "base/bind.h" |
#include "base/compiler_specific.h" |
+#include "base/location.h" |
#include "base/logging.h" |
+#include "base/message_loop/message_loop_proxy.h" |
#include "base/stl_util.h" |
#include "base/strings/string_number_conversions.h" |
#include "base/strings/string_util.h" |
@@ -30,7 +33,11 @@ HttpServer::HttpServer(scoped_ptr<ServerSocket> server_socket, |
last_id_(0), |
weak_ptr_factory_(this) { |
DCHECK(server_socket_); |
- DoAcceptLoop(); |
+ // Start accepting connections in next run loop in case when delegate is not |
+ // ready to get callbacks. |
+ base::MessageLoopProxy::current()->PostTask( |
+ FROM_HERE, |
+ base::Bind(&HttpServer::DoAcceptLoop, weak_ptr_factory_.GetWeakPtr())); |
} |
HttpServer::~HttpServer() { |