diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/connection.cpp | 3 | ||||
-rw-r--r-- | src/connectionmanager.cpp | 2 | ||||
-rw-r--r-- | src/test/clistress/main.cpp | 23 |
3 files changed, 5 insertions, 23 deletions
diff --git a/src/connection.cpp b/src/connection.cpp index 045ea17..c68c519 100644 --- a/src/connection.cpp +++ b/src/connection.cpp | |||
@@ -215,6 +215,8 @@ int Connection::readInput() | |||
215 | } | 215 | } |
216 | else | 216 | else |
217 | { | 217 | { |
218 | if( nbytes == 0 ) | ||
219 | break; | ||
218 | nTotalRead += nbytes; | 220 | nTotalRead += nbytes; |
219 | appendInput( buffer, nbytes ); | 221 | appendInput( buffer, nbytes ); |
220 | /* Data read. */ | 222 | /* Data read. */ |
@@ -258,6 +260,7 @@ bool Connection::readInput( int nSec, int nUSec, int *pnSecBack, int *pnUSecBack | |||
258 | } | 260 | } |
259 | else if( retval ) | 261 | else if( retval ) |
260 | { | 262 | { |
263 | printf("retval=%d, nSocket=%d,%d, sec=%d, usec=%d\n", retval, nSocket, FD_ISSET( nSocket, &rfds ), tv.tv_sec, tv.tv_usec ); | ||
261 | // None of them have data, but the connection is still active. | 264 | // None of them have data, but the connection is still active. |
262 | if( readInput() == 0 ) | 265 | if( readInput() == 0 ) |
263 | { | 266 | { |
diff --git a/src/connectionmanager.cpp b/src/connectionmanager.cpp index 88d7878..cffdf29 100644 --- a/src/connectionmanager.cpp +++ b/src/connectionmanager.cpp | |||
@@ -167,7 +167,7 @@ bool ConnectionManager::scanConnections( int nTimeout, bool bForceTimeout ) | |||
167 | } | 167 | } |
168 | 168 | ||
169 | /* Data arriving on an already-connected socket. */ | 169 | /* Data arriving on an already-connected socket. */ |
170 | if( pCon->readInput() != true ) | 170 | if( pCon->readInput() == 0 ) |
171 | { | 171 | { |
172 | xLog.LineLog( MultiLog::LStatus, "Closing connection due to disconnect."); | 172 | xLog.LineLog( MultiLog::LStatus, "Closing connection due to disconnect."); |
173 | close( i ); | 173 | close( i ); |
diff --git a/src/test/clistress/main.cpp b/src/test/clistress/main.cpp index 3f5038b..0869945 100644 --- a/src/test/clistress/main.cpp +++ b/src/test/clistress/main.cpp | |||
@@ -1,26 +1,5 @@ | |||
1 | #include "connection.h" | 1 | #include "connection.h" |
2 | 2 | ||
3 | void _waitForLength( Connection &con, int len) | ||
4 | { | ||
5 | int rlen = con.getInputAmnt(); | ||
6 | |||
7 | if (rlen >= len) | ||
8 | return; | ||
9 | |||
10 | int time_left = 5; | ||
11 | int mic_left = 0; | ||
12 | |||
13 | while (rlen < len) | ||
14 | { | ||
15 | if (time_left == 0 && mic_left == 0) | ||
16 | { | ||
17 | throw "Socket Timeout"; | ||
18 | } | ||
19 | con.readInput(time_left, mic_left, &time_left, &mic_left); | ||
20 | rlen = con.getInputAmnt(); | ||
21 | } | ||
22 | } | ||
23 | |||
24 | int main() | 3 | int main() |
25 | { | 4 | { |
26 | Connection c; | 5 | Connection c; |
@@ -30,7 +9,7 @@ int main() | |||
30 | c.appendOutput("d"); | 9 | c.appendOutput("d"); |
31 | c.writeOutput(); | 10 | c.writeOutput(); |
32 | 11 | ||
33 | _waitForLength( c, 40 ); | 12 | c.waitForInput( 5, 40, 0 ); |
34 | 13 | ||
35 | c.close(); | 14 | c.close(); |
36 | 15 | ||