summaryrefslogtreecommitdiffstats
path: root/Sluift
diff options
context:
space:
mode:
authorThanos Doukoudakis <thanos.doukoudakis@isode.com>2017-05-11 15:41:20 (GMT)
committerKevin Smith <kevin.smith@isode.com>2017-05-15 09:27:12 (GMT)
commit24baaf8ad66354c17a6d6ba4438e95d6798564a8 (patch)
tree884f0c021f4cb7bd0bb473f5d6f68bc17f744ccd /Sluift
parentad7fcc8ef11cbe07d48354a5d45b09e4faa9b24d (diff)
downloadswift-24baaf8ad66354c17a6d6ba4438e95d6798564a8.zip
swift-24baaf8ad66354c17a6d6ba4438e95d6798564a8.tar.bz2
Add pointer checks in some CoreClient members.
This patch adds some checks in the CoreClient class to avoid accessing stanza and session channels to send data when they are not available. The Sluift lua wrapper functions will throw an exception in these cases. Test-Information All unit test pass. Timlx: Test Suite ‘basic’: All tests Pass. Test Suite ‘fmuc’: All tests except FmucChain Pass (Not related with the changes) Change-Id: I3d5894b3cfdafd0ea28c0fb33b6db8588f2a5c8f
Diffstat (limited to 'Sluift')
-rw-r--r--Sluift/client.cpp11
1 files changed, 9 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;