]> git.tdb.fi Git - libs/net.git/blobdiff - source/client.cpp
Pass an exception to signal_socket_error instead of error code
[libs/net.git] / source / client.cpp
index cb7b0eabc48302047cdfa5754bb4a40d78c877b3..0729544a7ce0686754f721e8e6dee3e30cd7c40e 100644 (file)
@@ -1,10 +1,3 @@
-/* $Id$
-
-This file is part of libmsphttp
-Copyright © 2008  Mikkosoft Productions, Mikko Rasa
-Distributed under the LGPL
-*/
-
 #include <msp/core/except.h>
 #include <msp/core/refptr.h>
 #include <msp/net/resolve.h>
@@ -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;
        }