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)