X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fclient.cpp;h=0729544a7ce0686754f721e8e6dee3e30cd7c40e;hb=1c965907682f4714db7b952915cf5b6bf9b7f4c1;hp=cb7b0eabc48302047cdfa5754bb4a40d78c877b3;hpb=df006bfbbe8e8b49a52296f42894d4a452ed4c90;p=libs%2Fnet.git diff --git a/source/client.cpp b/source/client.cpp index cb7b0ea..0729544 100644 --- a/source/client.cpp +++ b/source/client.cpp @@ -1,10 +1,3 @@ -/* $Id$ - -This file is part of libmsphttp -Copyright © 2008 Mikkosoft Productions, Mikko Rasa -Distributed under the LGPL -*/ - #include #include #include @@ -112,13 +105,12 @@ void Client::abort() request = 0; } -void Client::connect_finished(int err) +void Client::connect_finished(const exception *err) { if(err) { signal_socket_error.emit(err); - sock->close(); delete request; request = 0; } @@ -129,7 +121,19 @@ void Client::connect_finished(int err) void Client::data_available() { char rbuf[4096]; - unsigned len = sock->read(rbuf, sizeof(rbuf)); + unsigned len; + try + { + len = sock->read(rbuf, sizeof(rbuf)); + } + catch(const exception &e) + { + signal_socket_error.emit(&e); + return; + } + + if(!len) + return; in_buf.append(rbuf, len); if(!response) @@ -151,7 +155,6 @@ void Client::data_available() { signal_response_complete.emit(*response); - sock->close(); delete request; request = 0; }