]> git.tdb.fi Git - libs/net.git/blobdiff - source/client.cpp
Use maputils.h
[libs/net.git] / source / client.cpp
index 6801ad2a3fc73cae566170577ad03b20f0182dc3..0729544a7ce0686754f721e8e6dee3e30cd7c40e 100644 (file)
@@ -105,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;
        }
@@ -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 exception &e)
+       {
+               signal_socket_error.emit(&e);
+               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;
        }