summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Sluift/client.cpp11
-rw-r--r--Swiften/Client/CoreClient.cpp4
2 files changed, 13 insertions, 2 deletions
diff --git a/Sluift/client.cpp b/Sluift/client.cpp
index 0dc7014..75f675d 100644
--- a/Sluift/client.cpp
+++ b/Sluift/client.cpp
@@ -358,6 +358,9 @@ SLUIFT_LUA_FUNCTION_WITH_HELP(
}
message->addPayloads(payloads.begin(), payloads.end());
message->setType(type);
+ if (!getClient(L)->getClient()->isAvailable()) {
+ throw Lua::Exception("Trying to send message while client is offline.");
+ }
getClient(L)->getClient()->sendMessage(message);
return 0;
}
@@ -403,7 +406,9 @@ SLUIFT_LUA_FUNCTION_WITH_HELP(
std::vector< std::shared_ptr<Payload> > payloads = getPayloadsFromTable(L, index);
presence->addPayloads(payloads.begin(), payloads.end());
}
-
+ if (!getClient(L)->getClient()->getPresenceSender()->isAvailable()) {
+ throw Lua::Exception("Trying to send presence while client is offline.");
+ }
getClient(L)->getClient()->getPresenceSender()->sendPresence(presence);
lua_pushvalue(L, 1);
return 0;
@@ -489,7 +494,9 @@ SLUIFT_LUA_FUNCTION_WITH_HELP(
""
) {
Sluift::globals.eventLoop.runOnce();
-
+ if (!getClient(L)->getClient()->isAvailable()) {
+ throw Lua::Exception("Trying to send data while client is offline.");
+ }
getClient(L)->getClient()->sendData(std::string(Lua::checkString(L, 2)));
lua_pushvalue(L, 1);
return 0;
diff --git a/Swiften/Client/CoreClient.cpp b/Swiften/Client/CoreClient.cpp
index 3c7902e..1de1d61 100644
--- a/Swiften/Client/CoreClient.cpp
+++ b/Swiften/Client/CoreClient.cpp
@@ -390,6 +390,10 @@ void CoreClient::sendPresence(std::shared_ptr<Presence> presence) {
}
void CoreClient::sendData(const std::string& data) {
+ if (!sessionStream_) {
+ SWIFT_LOG(warning) << "Client: Trying to send data while disconnected." << std::endl;
+ return;
+ }
sessionStream_->writeData(data);
}