You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by gs...@apache.org on 2007/02/21 20:23:26 UTC
svn commit: r510159 -
/incubator/qpid/trunk/qpid/cpp/lib/broker/SessionHandlerImpl.cpp
Author: gsim
Date: Wed Feb 21 11:23:25 2007
New Revision: 510159
URL: http://svn.apache.org/viewvc?view=rev&rev=510159
Log:
Check for existing channel on channel_open
Modified:
incubator/qpid/trunk/qpid/cpp/lib/broker/SessionHandlerImpl.cpp
Modified: incubator/qpid/trunk/qpid/cpp/lib/broker/SessionHandlerImpl.cpp
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/lib/broker/SessionHandlerImpl.cpp?view=diff&rev=510159&r1=510158&r2=510159
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/lib/broker/SessionHandlerImpl.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/lib/broker/SessionHandlerImpl.cpp Wed Feb 21 11:23:25 2007
@@ -222,9 +222,15 @@
void SessionHandlerImpl::ChannelHandlerImpl::open(u_int16_t channel, const string& /*outOfBand*/){
- parent->channels[channel] = new Channel(parent->client->getProtocolVersion() , parent->context, channel, parent->framemax,
- parent->queues->getStore(), parent->settings.stagingThreshold);
- parent->client->getChannel().openOk(channel);
+ if (parent->channels[channel] == 0) {
+ parent->channels[channel] = new Channel(parent->client->getProtocolVersion() , parent->context, channel, parent->framemax,
+ parent->queues->getStore(), parent->settings.stagingThreshold);
+ parent->client->getChannel().openOk(channel);
+ } else {
+ std::stringstream out;
+ out << "Channel already open: " << channel;
+ throw ConnectionException(504, out.str());
+ }
}
void SessionHandlerImpl::ChannelHandlerImpl::flow(u_int16_t /*channel*/, bool /*active*/){}