Index: mojo/services/network/network_service_impl.cc |
diff --git a/mojo/services/network/network_service_impl.cc b/mojo/services/network/network_service_impl.cc |
index edf82e0de53ab50becded317844d2c64136fdc11..7c613f67e31657a1c7803445c27967afec2cf36f 100644 |
--- a/mojo/services/network/network_service_impl.cc |
+++ b/mojo/services/network/network_service_impl.cc |
@@ -5,6 +5,7 @@ |
#include "mojo/services/network/network_service_impl.h" |
#include "mojo/services/network/cookie_store_impl.h" |
+#include "mojo/services/network/http_server_impl.h" |
#include "mojo/services/network/net_adapters.h" |
#include "mojo/services/network/tcp_bound_socket_impl.h" |
#include "mojo/services/network/udp_socket_impl.h" |
@@ -75,8 +76,17 @@ void NetworkServiceImpl::CreateHttpServer( |
NetAddressPtr local_address, |
HttpServerDelegatePtr delegate, |
const CreateHttpServerCallback& callback) { |
- // TODO(yzshen): implement this. |
- callback.Run(MakeNetworkError(net::ERR_NOT_IMPLEMENTED), nullptr); |
+ // Please see the comments of HttpServerImpl::Create() about the lifetime of |
+ // the returned object. |
+ HttpServerImpl* http_server = HttpServerImpl::Create(delegate.Pass()); |
+ |
+ int net_error = http_server->Start(local_address.Pass()); |
+ if (net_error != net::OK) { |
+ callback.Run(MakeNetworkError(net_error), nullptr); |
+ delete http_server; |
+ return; |
+ } |
+ callback.Run(MakeNetworkError(net::OK), http_server->GetLocalAddress()); |
} |
} // namespace mojo |