diff --git a/HISTORY.md b/HISTORY.md index 3f4d5d9d..650cee24 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,3 +1,8 @@ +Dev version +----------- +* add SERVICE_NAME in loader +* throw error back when skynet.error + v0.4.0 (2014-6-30) ----------- * Optimize redis driver `compose_message`. diff --git a/lualib/loader.lua b/lualib/loader.lua index 05224b92..1c4ee58a 100644 --- a/lualib/loader.lua +++ b/lualib/loader.lua @@ -3,11 +3,13 @@ for word in string.gmatch(..., "%S+") do table.insert(args, word) end +SERVICE_NAME = args[1] + local main, pattern local err = {} for pat in string.gmatch(LUA_SERVICE, "([^;]+);*") do - local filename = string.gsub(pat, "?", args[1]) + local filename = string.gsub(pat, "?", SERVICE_NAME) local f, msg = loadfile(filename) if not f then table.insert(err, msg) diff --git a/lualib/skynet.lua b/lualib/skynet.lua index e2e274af..7719d2ae 100644 --- a/lualib/skynet.lua +++ b/lualib/skynet.lua @@ -253,6 +253,13 @@ end function skynet.exit() skynet.send(".launcher","lua","REMOVE",skynet.self()) + for co, session in pairs(session_coroutine_id) do + local address = session_coroutine_address[co] + local self = skynet.self() + if session~=0 and address then + skynet.redirect(self, address, "error", session, "") + end + end c.command("EXIT") end diff --git a/test/testdeadcall.lua b/test/testdeadcall.lua index d348a411..c5d67b8c 100644 --- a/test/testdeadcall.lua +++ b/test/testdeadcall.lua @@ -14,7 +14,7 @@ end) else skynet.start(function() - local test = skynet.newservice("testdeadcall", "test") -- launch self in test mode + local test = skynet.newservice(SERVICE_NAME, "test") -- launch self in test mode print(pcall(function() skynet.send(test,"lua", "hello world") diff --git a/test/testmulticast.lua b/test/testmulticast.lua index 88f79ccb..8f084abf 100644 --- a/test/testmulticast.lua +++ b/test/testmulticast.lua @@ -27,7 +27,7 @@ skynet.start(function() local channel = mc.new() print("New channel", channel) for i=1,10 do - local sub = skynet.newservice("testmulticast", "sub") + local sub = skynet.newservice(SERVICE_NAME, "sub") skynet.call(sub, "lua", "init", channel.channel) end