X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fclient.cpp;h=48cd291664b26ad659aff9919f028311e5d48f4d;hb=2ced7606eb9090cdddd89e0481c441403d367bb2;hp=6801ad2a3fc73cae566170577ad03b20f0182dc3;hpb=c3bc44e20b80683ec1e8296a449804ff6c5f7aff;p=libs%2Fnet.git diff --git a/source/client.cpp b/source/client.cpp index 6801ad2..48cd291 100644 --- a/source/client.cpp +++ b/source/client.cpp @@ -111,7 +111,6 @@ void Client::connect_finished(int err) { signal_socket_error.emit(err); - sock->close(); delete request; request = 0; } @@ -122,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 SystemError &e) + { + signal_socket_error.emit(e.get_error_code()); + return; + } + + if(!len) + return; in_buf.append(rbuf, len); if(!response) @@ -144,7 +155,6 @@ void Client::data_available() { signal_response_complete.emit(*response); - sock->close(); delete request; request = 0; }