summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEliot Horowitz <eliot@10gen.com>2011-02-22 11:29:34 -0500
committerEliot Horowitz <eliot@10gen.com>2011-02-22 11:29:49 -0500
commit2c6e26690a5d9ee616ec953d1b75df47b1e388e1 (patch)
treee7b90fb070ab3abd3a16d818fadac957e16643f4
parentc2e985fdd6545c65de582fafeff4f070b6b5dec3 (diff)
downloadmongo-2c6e26690a5d9ee616ec953d1b75df47b1e388e1.tar.gz
slightly safer connection semaphore management
-rw-r--r--util/message_server_port.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/util/message_server_port.cpp b/util/message_server_port.cpp
index 698359749e4..6d00628c8ad 100644
--- a/util/message_server_port.cpp
+++ b/util/message_server_port.cpp
@@ -32,10 +32,11 @@ namespace mongo {
MessageHandler * handler;
void threadRun( MessagingPort * inPort) {
+ TicketHolderReleaser connTicketReleaser( &connTicketHolder );
+
assert( inPort );
setThreadName( "conn" );
- TicketHolderReleaser connTicketReleaser( &connTicketHolder );
auto_ptr<MessagingPort> p( inPort );
@@ -101,6 +102,7 @@ namespace mongo {
boost::thread thr( boost::bind( &pms::threadRun , p ) );
}
catch ( boost::thread_resource_error& ) {
+ connTicketHolder.release();
log() << "can't create new thread, closing connection" << endl;
p->shutdown();