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 | { |