diff options
Diffstat (limited to 'Swiften/Component/ComponentSession.cpp')
-rw-r--r-- | Swiften/Component/ComponentSession.cpp | 130 |
1 files changed, 65 insertions, 65 deletions
diff --git a/Swiften/Component/ComponentSession.cpp b/Swiften/Component/ComponentSession.cpp index 79660de..46c88db 100644 --- a/Swiften/Component/ComponentSession.cpp +++ b/Swiften/Component/ComponentSession.cpp @@ -24,99 +24,99 @@ ComponentSession::~ComponentSession() { } void ComponentSession::start() { - stream->onStreamStartReceived.connect(boost::bind(&ComponentSession::handleStreamStart, shared_from_this(), _1)); - stream->onElementReceived.connect(boost::bind(&ComponentSession::handleElement, shared_from_this(), _1)); - stream->onClosed.connect(boost::bind(&ComponentSession::handleStreamClosed, shared_from_this(), _1)); + stream->onStreamStartReceived.connect(boost::bind(&ComponentSession::handleStreamStart, shared_from_this(), _1)); + stream->onElementReceived.connect(boost::bind(&ComponentSession::handleElement, shared_from_this(), _1)); + stream->onClosed.connect(boost::bind(&ComponentSession::handleStreamClosed, shared_from_this(), _1)); - assert(state == Initial); - state = WaitingForStreamStart; - sendStreamHeader(); + assert(state == Initial); + state = WaitingForStreamStart; + sendStreamHeader(); } void ComponentSession::sendStreamHeader() { - ProtocolHeader header; - header.setTo(jid); - stream->writeHeader(header); + ProtocolHeader header; + header.setTo(jid); + stream->writeHeader(header); } void ComponentSession::sendStanza(boost::shared_ptr<Stanza> stanza) { - stream->writeElement(stanza); + stream->writeElement(stanza); } void ComponentSession::handleStreamStart(const ProtocolHeader& header) { - checkState(WaitingForStreamStart); - state = Authenticating; - stream->writeElement(ComponentHandshake::ref(new ComponentHandshake(ComponentHandshakeGenerator::getHandshake(header.getID(), secret, crypto)))); + checkState(WaitingForStreamStart); + state = Authenticating; + stream->writeElement(ComponentHandshake::ref(new ComponentHandshake(ComponentHandshakeGenerator::getHandshake(header.getID(), secret, crypto)))); } void ComponentSession::handleElement(boost::shared_ptr<ToplevelElement> element) { - if (boost::shared_ptr<Stanza> stanza = boost::dynamic_pointer_cast<Stanza>(element)) { - if (getState() == Initialized) { - onStanzaReceived(stanza); - } - else { - finishSession(Error::UnexpectedElementError); - } - } - else if (boost::dynamic_pointer_cast<ComponentHandshake>(element)) { - if (!checkState(Authenticating)) { - return; - } - stream->setWhitespacePingEnabled(true); - state = Initialized; - onInitialized(); - } - else if (getState() == Authenticating) { - if (boost::dynamic_pointer_cast<StreamFeatures>(element)) { - // M-Link sends stream features, so swallow that. - } - else { - // FIXME: We should actually check the element received - finishSession(Error::AuthenticationFailedError); - } - } - else { - finishSession(Error::UnexpectedElementError); - } + if (boost::shared_ptr<Stanza> stanza = boost::dynamic_pointer_cast<Stanza>(element)) { + if (getState() == Initialized) { + onStanzaReceived(stanza); + } + else { + finishSession(Error::UnexpectedElementError); + } + } + else if (boost::dynamic_pointer_cast<ComponentHandshake>(element)) { + if (!checkState(Authenticating)) { + return; + } + stream->setWhitespacePingEnabled(true); + state = Initialized; + onInitialized(); + } + else if (getState() == Authenticating) { + if (boost::dynamic_pointer_cast<StreamFeatures>(element)) { + // M-Link sends stream features, so swallow that. + } + else { + // FIXME: We should actually check the element received + finishSession(Error::AuthenticationFailedError); + } + } + else { + finishSession(Error::UnexpectedElementError); + } } bool ComponentSession::checkState(State state) { - if (this->state != state) { - finishSession(Error::UnexpectedElementError); - return false; - } - return true; + if (this->state != state) { + finishSession(Error::UnexpectedElementError); + return false; + } + return true; } void ComponentSession::handleStreamClosed(boost::shared_ptr<Swift::Error> streamError) { - State oldState = state; - state = Finished; - stream->setWhitespacePingEnabled(false); - stream->onStreamStartReceived.disconnect(boost::bind(&ComponentSession::handleStreamStart, shared_from_this(), _1)); - stream->onElementReceived.disconnect(boost::bind(&ComponentSession::handleElement, shared_from_this(), _1)); - stream->onClosed.disconnect(boost::bind(&ComponentSession::handleStreamClosed, shared_from_this(), _1)); - if (oldState == Finishing) { - onFinished(error); - } - else { - onFinished(streamError); - } + State oldState = state; + state = Finished; + stream->setWhitespacePingEnabled(false); + stream->onStreamStartReceived.disconnect(boost::bind(&ComponentSession::handleStreamStart, shared_from_this(), _1)); + stream->onElementReceived.disconnect(boost::bind(&ComponentSession::handleElement, shared_from_this(), _1)); + stream->onClosed.disconnect(boost::bind(&ComponentSession::handleStreamClosed, shared_from_this(), _1)); + if (oldState == Finishing) { + onFinished(error); + } + else { + onFinished(streamError); + } } void ComponentSession::finish() { - finishSession(boost::shared_ptr<Error>()); + finishSession(boost::shared_ptr<Error>()); } void ComponentSession::finishSession(Error::Type error) { - finishSession(boost::make_shared<Swift::ComponentSession::Error>(error)); + finishSession(boost::make_shared<Swift::ComponentSession::Error>(error)); } void ComponentSession::finishSession(boost::shared_ptr<Swift::Error> finishError) { - state = Finishing; - error = finishError; - assert(stream->isOpen()); - stream->writeFooter(); - stream->close(); + state = Finishing; + error = finishError; + assert(stream->isOpen()); + stream->writeFooter(); + stream->close(); } } |