File tree Expand file tree Collapse file tree 2 files changed +17
-9
lines changed
Release/src/http/listener Expand file tree Collapse file tree 2 files changed +17
-9
lines changed Original file line number Diff line number Diff line change @@ -17,6 +17,7 @@ intercommiura
17
17
halex2005
18
18
simonlep
19
19
jracle
20
+ gandziej
20
21
21
22
AutoDesk Inc.
22
23
Cyrille Fauvel (cyrillef)
Original file line number Diff line number Diff line change @@ -853,10 +853,12 @@ pplx::task<void> http_linux_server::register_listener(details::http_listener_imp
853
853
{
854
854
pplx::extensibility::scoped_rw_lock_t lock (m_listeners_lock);
855
855
if (m_registered_listeners.find (listener) != m_registered_listeners.end ())
856
+ {
856
857
throw std::invalid_argument (" listener already registered" );
858
+ }
857
859
858
- try
859
- {
860
+ try
861
+ {
860
862
m_registered_listeners[listener] = utility::details::make_unique<pplx::extensibility::reader_writer_lock_t >();
861
863
862
864
auto found_hostport_listener = m_listeners.find (hostport);
@@ -866,17 +868,22 @@ pplx::task<void> http_linux_server::register_listener(details::http_listener_imp
866
868
std::make_pair (hostport, utility::details::make_unique<details::hostport_listener>(this , hostport))).first ;
867
869
868
870
if (m_started)
871
+ {
869
872
found_hostport_listener->second ->start ();
873
+ }
870
874
}
871
875
872
876
found_hostport_listener->second ->add_listener (path, listener);
873
- }
874
- catch (...) // naive solution
875
- {
876
- m_registered_listeners.erase (listener);
877
- m_listeners.erase (hostport);
878
- throw ;
879
- }
877
+ }
878
+ catch (...)
879
+ {
880
+ // Future improvement - really this API should entirely be asychronously.
881
+ // the hostport_listener::start() method should be made to return a task
882
+ // throwing the exception.
883
+ m_registered_listeners.erase (listener);
884
+ m_listeners.erase (hostport);
885
+ throw ;
886
+ }
880
887
}
881
888
882
889
return pplx::task_from_result ();
You can’t perform that action at this time.
0 commit comments