mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-24 12:20:41 +00:00
bugfix: close socket once when harbor disconnected
This commit is contained in:
@@ -183,10 +183,12 @@ _update_name(struct master *m, uint32_t handle, const char * buffer, size_t sz)
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
close_harbor(struct master *m, int harbor_id) {
|
close_harbor(struct master *m, int harbor_id) {
|
||||||
struct skynet_context * context = m->ctx;
|
if (m->connected[harbor_id]) {
|
||||||
skynet_socket_close(context, m->remote_fd[harbor_id]);
|
struct skynet_context * context = m->ctx;
|
||||||
m->remote_fd[harbor_id] = -1;
|
skynet_socket_close(context, m->remote_fd[harbor_id]);
|
||||||
m->connected[harbor_id] = false;
|
m->remote_fd[harbor_id] = -1;
|
||||||
|
m->connected[harbor_id] = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -236,10 +238,11 @@ dispatch_socket(struct master *m, const struct skynet_socket_message *msg, int s
|
|||||||
assert(id);
|
assert(id);
|
||||||
on_connected(m, id);
|
on_connected(m, id);
|
||||||
break;
|
break;
|
||||||
case SKYNET_SOCKET_TYPE_CLOSE:
|
|
||||||
case SKYNET_SOCKET_TYPE_ERROR:
|
case SKYNET_SOCKET_TYPE_ERROR:
|
||||||
close_harbor(m, id);
|
|
||||||
skynet_error(m->ctx, "socket error on harbor %d", id);
|
skynet_error(m->ctx, "socket error on harbor %d", id);
|
||||||
|
// go though, close socket
|
||||||
|
case SKYNET_SOCKET_TYPE_CLOSE:
|
||||||
|
close_harbor(m, id);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
skynet_error(m->ctx, "Invalid socket message type %d", msg->type);
|
skynet_error(m->ctx, "Invalid socket message type %d", msg->type);
|
||||||
|
|||||||
Reference in New Issue
Block a user