diff options
| author | Mike Buland <eichlan@xagasoft.com> | 2010-05-13 01:10:56 +0000 |
|---|---|---|
| committer | Mike Buland <eichlan@xagasoft.com> | 2010-05-13 01:10:56 +0000 |
| commit | 9a30a663e472774a45b78b3240f6a399637992fc (patch) | |
| tree | f0758fa4581600c375c9fddec18d54f81463e075 | |
| parent | 6acfc972c2d5734e62c45b4803ef18101fc1dcb2 (diff) | |
| download | libbu++-9a30a663e472774a45b78b3240f6a399637992fc.tar.gz libbu++-9a30a663e472774a45b78b3240f6a399637992fc.tar.bz2 libbu++-9a30a663e472774a45b78b3240f6a399637992fc.tar.xz libbu++-9a30a663e472774a45b78b3240f6a399637992fc.zip | |
Hmmm, apparently there was a corner case that would cause a disconnect to
crater the server system. Lameness...
Diffstat (limited to '')
| -rw-r--r-- | src/server.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/server.cpp b/src/server.cpp index 36d9d6c..e55713d 100644 --- a/src/server.cpp +++ b/src/server.cpp | |||
| @@ -96,7 +96,17 @@ void Bu::Server::scan() | |||
| 96 | try | 96 | try |
| 97 | { | 97 | { |
| 98 | Client *pClient = hClients.get( j ); | 98 | Client *pClient = hClients.get( j ); |
| 99 | pClient->processOutput(); | 99 | try |
| 100 | { | ||
| 101 | pClient->processOutput(); | ||
| 102 | } | ||
| 103 | catch( Bu::SocketException &e ) | ||
| 104 | { | ||
| 105 | onClosedConnection( pClient ); | ||
| 106 | pClient->close(); | ||
| 107 | hClients.erase( j ); | ||
| 108 | FD_CLR( j, &fdActive ); | ||
| 109 | } | ||
| 100 | } | 110 | } |
| 101 | catch( Bu::HashException &e ) | 111 | catch( Bu::HashException &e ) |
| 102 | { | 112 | { |
