diff --git a/skynet-src/skynet_harbor.c b/skynet-src/skynet_harbor.c index 1e9b771d..a666c699 100644 --- a/skynet-src/skynet_harbor.c +++ b/skynet-src/skynet_harbor.c @@ -34,7 +34,7 @@ skynet_harbor_register(struct remote_name *rname) { int skynet_harbor_message_isremote(uint32_t handle) { - return !(handle & HARBOR); + return (handle & ~HANDLE_MASK) != HARBOR; } void diff --git a/skynet-src/skynet_server.c b/skynet-src/skynet_server.c index 9ed8bab1..72f90f87 100644 --- a/skynet-src/skynet_server.c +++ b/skynet-src/skynet_server.c @@ -103,6 +103,7 @@ skynet_context_new(const char * name, const char *param) { ctx->handle = skynet_handle_register(ctx); struct message_queue * queue = ctx->queue = skynet_mq_create(ctx->handle); // init function maybe use ctx->handle, so it must init at last + _context_inc(); CHECKCALLING_BEGIN(ctx) int r = skynet_module_instance_init(mod, inst, ctx, param); @@ -116,7 +117,6 @@ skynet_context_new(const char * name, const char *param) { if (ret) { printf("[:%x] launch %s %s\n",ret->handle, name, param ? param : ""); } - _context_inc(); return ret; } else { skynet_context_release(ctx);