summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoger <roger.planas@isode.com>2013-10-22 14:36:24 (GMT)
committerSwift Review <review@swift.im>2013-10-28 18:22:05 (GMT)
commit4c8290e3cf0c644e84083c17d5004e15e66b7d86 (patch)
tree3dc6fa648efdf73da83d99b71956eefc58497ae5
parentd0966f59c32eb613c214af936f70866254e23d9b (diff)
downloadswift-4c8290e3cf0c644e84083c17d5004e15e66b7d86.zip
swift-4c8290e3cf0c644e84083c17d5004e15e66b7d86.tar.bz2
Add port option to Sluift client connect
Provide a mechanism to allow setting both the port and hostname for a Sluift client connection. By default Sluift leave port to -1 to use the port discovered by SRV lookups, with 5222 as a fallback. With this change, the port is now manually configurable as well. Change-Id: Idef5457e95127cfa86181b462d9ef42aa4f096ff
-rw-r--r--Sluift/SluiftClient.cpp3
-rw-r--r--Sluift/SluiftClient.h2
-rw-r--r--Sluift/client.cpp16
3 files changed, 17 insertions, 4 deletions
diff --git a/Sluift/SluiftClient.cpp b/Sluift/SluiftClient.cpp
index 8a8d772..bfae621 100644
--- a/Sluift/SluiftClient.cpp
+++ b/Sluift/SluiftClient.cpp
@@ -52,9 +52,10 @@ void SluiftClient::connect() {
client->connect(options);
}
-void SluiftClient::connect(const std::string& host) {
+void SluiftClient::connect(const std::string& host, int port) {
rosterReceived = false;
options.manualHostname = host;
+ options.manualPort = port;
client->connect(options);
}
diff --git a/Sluift/SluiftClient.h b/Sluift/SluiftClient.h
index bedd6ba..60eae16 100644
--- a/Sluift/SluiftClient.h
+++ b/Sluift/SluiftClient.h
@@ -75,7 +75,7 @@ namespace Swift {
}
void connect();
- void connect(const std::string& host);
+ void connect(const std::string& host, int port);
void waitConnected();
bool isConnected() const;
diff --git a/Sluift/client.cpp b/Sluift/client.cpp
index df43075..04ce8f4 100644
--- a/Sluift/client.cpp
+++ b/Sluift/client.cpp
@@ -48,16 +48,20 @@ SLUIFT_LUA_FUNCTION(Client, async_connect) {
SluiftClient* client = getClient(L);
std::string host;
+ int port = -1;
if (lua_istable(L, 2)) {
if (boost::optional<std::string> hostString = Lua::getStringField(L, 2, "host")) {
host = *hostString;
}
+ if (boost::optional<int> portInt = Lua::getIntField(L, 2, "port")) {
+ port = *portInt;
+ }
}
- if (host.empty()) {
+ if (host.empty() && port == -1) {
client->connect();
}
else {
- client->connect(host);
+ client->connect(host, port);
}
return 0;
}
@@ -315,6 +319,14 @@ SLUIFT_LUA_FUNCTION(Client, send) {
SLUIFT_LUA_FUNCTION(Client, set_options) {
SluiftClient* client = getClient(L);
Lua::checkType(L, 2, LUA_TTABLE);
+ lua_getfield(L, 2, "host");
+ if (!lua_isnil(L, -1)) {
+ client->getOptions().manualHostname = lua_tostring(L, -1);
+ }
+ lua_getfield(L, 2, "port");
+ if (!lua_isnil(L, -1)) {
+ client->getOptions().manualPort = lua_tointeger(L, -1);
+ }
lua_getfield(L, 2, "ack");
if (!lua_isnil(L, -1)) {
client->getOptions().useAcks = lua_toboolean(L, -1);