summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Swiften/Network/BOSHConnectionPool.cpp3
-rw-r--r--Swiften/Serializer/PayloadSerializers/JinglePayloadSerializer.cpp7
2 files changed, 4 insertions, 6 deletions
diff --git a/Swiften/Network/BOSHConnectionPool.cpp b/Swiften/Network/BOSHConnectionPool.cpp
index 7d43f42..bb24aa5 100644
--- a/Swiften/Network/BOSHConnectionPool.cpp
+++ b/Swiften/Network/BOSHConnectionPool.cpp
@@ -137,37 +137,34 @@ BOSHConnection::ref BOSHConnectionPool::getSuitableConnection() {
}
void BOSHConnectionPool::tryToSendQueuedData() {
if (sid.empty()) {
/* If we've not got as far as stream start yet, pend */
return;
}
BOSHConnection::ref suitableConnection = getSuitableConnection();
- bool sent = false;
bool toSend = !dataQueue.empty();
if (suitableConnection) {
if (toSend) {
rid++;
suitableConnection->setRID(rid);
SafeByteArray data;
foreach (const SafeByteArray& datum, dataQueue) {
data.insert(data.end(), datum.begin(), datum.end());
}
suitableConnection->write(data);
- sent = true;
dataQueue.clear();
}
else if (pendingTerminate) {
rid++;
suitableConnection->setRID(rid);
suitableConnection->terminateStream();
- sent = true;
onSessionTerminated(boost::shared_ptr<BOSHError>());
}
}
if (!pendingTerminate) {
/* Ensure there's always a session waiting to read data for us */
bool pending = false;
foreach (BOSHConnection::ref connection, connections) {
if (connection && !connection->isReadyToSend()) {
pending = true;
diff --git a/Swiften/Serializer/PayloadSerializers/JinglePayloadSerializer.cpp b/Swiften/Serializer/PayloadSerializers/JinglePayloadSerializer.cpp
index 023f11a..c16a2e4 100644
--- a/Swiften/Serializer/PayloadSerializers/JinglePayloadSerializer.cpp
+++ b/Swiften/Serializer/PayloadSerializers/JinglePayloadSerializer.cpp
@@ -31,21 +31,22 @@ namespace Swift {
JinglePayloadSerializer::JinglePayloadSerializer(PayloadSerializerCollection* serializers) : serializers(serializers) {
}
std::string JinglePayloadSerializer::serializePayload(boost::shared_ptr<JinglePayload> payload) const {
XMLElement jinglePayload("jingle", "urn:xmpp:jingle:1");
jinglePayload.setAttribute("action", actionToString(payload->getAction()));
jinglePayload.setAttribute("initiator", payload->getInitiator());
jinglePayload.setAttribute("sid", payload->getSessionID());
-
- if (!payload->getPayloads().empty()) {
- foreach(boost::shared_ptr<Payload> subPayload, payload->getPayloads()) {
+
+ std::vector<boost::shared_ptr<Payload> > payloads = payload->getPayloads();
+ if (!payloads.empty()) {
+ foreach(boost::shared_ptr<Payload> subPayload, payloads) {
PayloadSerializer* serializer = serializers->getPayloadSerializer(subPayload);
if (serializer) {
jinglePayload.addNode(boost::shared_ptr<XMLRawTextNode>(new XMLRawTextNode(serializer->serialize(subPayload))));
}
}
}
if (payload->getReason().is_initialized()) {
boost::shared_ptr<XMLElement> reason = boost::make_shared<XMLElement>("reason");