diff options
Diffstat (limited to 'src/connection.cpp')
-rw-r--r-- | src/connection.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/connection.cpp b/src/connection.cpp index d66ff97..3d3c094 100644 --- a/src/connection.cpp +++ b/src/connection.cpp | |||
@@ -10,6 +10,7 @@ | |||
10 | #include <netinet/in.h> | 10 | #include <netinet/in.h> |
11 | #include <netdb.h> | 11 | #include <netdb.h> |
12 | #include <arpa/inet.h> | 12 | #include <arpa/inet.h> |
13 | #include <errno.h> | ||
13 | #include "exceptions.h" | 14 | #include "exceptions.h" |
14 | 15 | ||
15 | Connection::Connection() | 16 | Connection::Connection() |
@@ -208,15 +209,16 @@ int Connection::readInput() | |||
208 | //memset( buffer, 0, 2048 ); | 209 | //memset( buffer, 0, 2048 ); |
209 | 210 | ||
210 | nbytes = read( nSocket, buffer, 2048 ); | 211 | nbytes = read( nSocket, buffer, 2048 ); |
211 | if (nbytes < 0) | 212 | if( nbytes < 0 && errno != 0 && errno != EAGAIN ) |
212 | { | 213 | { |
214 | printf("errno: %d, %s\n", errno, strerror( errno ) ); | ||
213 | /* Read error. */ | 215 | /* Read error. */ |
214 | //perror("readInput"); | 216 | //perror("readInput"); |
215 | throw ConnectionException( excodeReadError, "Read error"); | 217 | throw ConnectionException( excodeReadError, "Read error: %s", strerror( errno ) ); |
216 | } | 218 | } |
217 | else | 219 | else |
218 | { | 220 | { |
219 | if( nbytes == 0 ) | 221 | if( nbytes <= 0 ) |
220 | break; | 222 | break; |
221 | nTotalRead += nbytes; | 223 | nTotalRead += nbytes; |
222 | appendInput( buffer, nbytes ); | 224 | appendInput( buffer, nbytes ); |