X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fhttp%2Fclient.cpp;h=e09057684957cac17acdeb17adeaf272efdc1952;hb=d20870655aeca0614d9fc315fe5f9893ebdc7aa3;hp=6f221810c922a78f85289934b36ce4d6b71b2100;hpb=ebbf753626c9e5dd26743c379741c53f9f11866e;p=libs%2Fnet.git diff --git a/source/http/client.cpp b/source/http/client.cpp index 6f22181..e090576 100644 --- a/source/http/client.cpp +++ b/source/http/client.cpp @@ -1,6 +1,6 @@ #include #include -#include +#include #include "client.h" #include "request.h" #include "response.h" @@ -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; }