diff --git a/examples/cluster1.lua b/examples/cluster1.lua index 921453d8..10b2e2f2 100644 --- a/examples/cluster1.lua +++ b/examples/cluster1.lua @@ -19,8 +19,8 @@ skynet.start(function() print(skynet.call(sdb, "lua", "SET", "b", "foobar2")) print(skynet.call(sdb, "lua", "GET", "a")) print(skynet.call(sdb, "lua", "GET", "b")) - skynet.error("Open db", cluster.open "db") - skynet.error("Open db2", cluster.open "db2") + cluster.open "db" + cluster.open "db2" -- unique snax service snax.uniqueservice "pingserver" end) diff --git a/service/clusterd.lua b/service/clusterd.lua index 440cb865..20faedfa 100644 --- a/service/clusterd.lua +++ b/service/clusterd.lua @@ -146,10 +146,15 @@ function command.listen(source, addr, port) local gate = skynet.newservice("gate") if port == nil then local address = assert(node_address[addr], addr .. " is down") - addr, port = string.match(address, "([^:]+):(.*)$") + addr, port = string.match(address, "(.+):([^:]+)$") + port = tonumber(port) + assert(port ~= 0) + skynet.call(gate, "lua", "open", { address = addr, port = port }) + skynet.ret(skynet.pack(addr, port)) + else + local realaddr, realport = skynet.call(gate, "lua", "open", { address = addr, port = port }) + skynet.ret(skynet.pack(realaddr, realport)) end - local addr, port = skynet.call(gate, "lua", "open", { address = addr, port = port }) - skynet.ret(skynet.pack(addr, port)) end function command.sender(source, node)