diff --git a/lualib/skynet.lua b/lualib/skynet.lua index 6ccdaea2..2b984e2a 100644 --- a/lualib/skynet.lua +++ b/lualib/skynet.lua @@ -229,7 +229,10 @@ function skynet.self() end function skynet.localname(name) - return string_to_handle(c.command("QUERY", name)) + local addr = c.command("QUERY", name) + if addr then + return string_to_handle(addr) + end end function skynet.launch(...) diff --git a/skynet-src/skynet_server.c b/skynet-src/skynet_server.c index 8f619ad4..3e902cc9 100644 --- a/skynet-src/skynet_server.c +++ b/skynet-src/skynet_server.c @@ -368,8 +368,10 @@ static const char * cmd_query(struct skynet_context * context, const char * param) { if (param[0] == '.') { uint32_t handle = skynet_handle_findname(param+1); - sprintf(context->result, ":%x", handle); - return context->result; + if (handle) { + sprintf(context->result, ":%x", handle); + return context->result; + } } return NULL; }