diff --git a/lualib/mongo.lua b/lualib/mongo.lua index f9eece35..9760a545 100644 --- a/lualib/mongo.lua +++ b/lualib/mongo.lua @@ -84,6 +84,7 @@ local function mongo_auth(mongoc) end return function() assert(mongoc:auth(user, pass)) + -- todo : If mongoc want to connect to replica set, runCommand ismater here, and call mongoc.__sock:changehost end end diff --git a/lualib/socketchannel.lua b/lualib/socketchannel.lua index e6a061f0..e30114d3 100644 --- a/lualib/socketchannel.lua +++ b/lualib/socketchannel.lua @@ -175,11 +175,11 @@ local function connect_once(self) end self.__authcoroutine = false - return true + return self.__sock ~= nil end local function try_connect(self , once) - local t = 100 + local t = 0 while not self.__closed do if connect_once(self) then if not once then @@ -292,6 +292,16 @@ function channel:close() end end +function channel:changehost(host, port) + self.__host = host + if port then + self.__port = port + end + if not self.__closed then + close_channel_socket(self) + end +end + channel_meta.__gc = channel.close local function wrapper_socket_function(f)