X-Git-Url: http://git.tdb.fi/?p=libs%2Fnet.git;a=blobdiff_plain;f=source%2Fhttp%2Fclient.cpp;fp=source%2Fhttp%2Fclient.cpp;h=e09057684957cac17acdeb17adeaf272efdc1952;hp=da6b25ebc17ef4c6fc0234704e4b80ad73f40b84;hb=d20870655aeca0614d9fc315fe5f9893ebdc7aa3;hpb=6af74d460a0ec4f53bb5cff328ee34d05131be9a diff --git a/source/http/client.cpp b/source/http/client.cpp index da6b25e..e090576 100644 --- a/source/http/client.cpp +++ b/source/http/client.cpp @@ -141,23 +141,39 @@ void Client::resolve_failed(unsigned tag, const exception &err) return; resolve_tag = 0; - signal_socket_error.emit(err); - delete request; request = 0; + + if(signal_socket_error.empty()) + throw err; + signal_socket_error.emit(err); } void Client::connect_finished(const exception *err) { if(err) { - signal_socket_error.emit(*err); - delete request; request = 0; + + if(signal_socket_error.empty()) + throw *err; + signal_socket_error.emit(*err); } else - sock->write(request->str()); + { + try + { + sock->write(request->str()); + } + catch(const exception &e) + { + if(signal_socket_error.empty()) + throw; + signal_socket_error.emit(e); + return; + } + } } void Client::data_available() @@ -170,6 +186,8 @@ void Client::data_available() } catch(const exception &e) { + if(signal_socket_error.empty()) + throw; signal_socket_error.emit(e); return; }