mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-25 04:33:05 +00:00
avoid close socket duplicate
This commit is contained in:
12
gate/mread.c
12
gate/mread.c
@@ -580,16 +580,20 @@ _link_node(struct ringbuffer * rb, int id, struct socket * s , struct ringbuffer
|
|||||||
void
|
void
|
||||||
mread_close_client(struct mread_pool * self, int id) {
|
mread_close_client(struct mread_pool * self, int id) {
|
||||||
struct socket * s = &self->sockets[id];
|
struct socket * s = &self->sockets[id];
|
||||||
s->status = SOCKET_HALFCLOSE;
|
if (s->status >= SOCKET_ALIVE && s->status != SOCKET_HALFCLOSE) {
|
||||||
try_close(self,s);
|
s->status = SOCKET_HALFCLOSE;
|
||||||
|
try_close(self, s);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
force_close_client(struct mread_pool * self, int id) {
|
force_close_client(struct mread_pool * self, int id) {
|
||||||
struct socket * s = &self->sockets[id];
|
struct socket * s = &self->sockets[id];
|
||||||
free_buffer(&s->client);
|
free_buffer(&s->client);
|
||||||
s->status = SOCKET_HALFCLOSE;
|
if (s->status >= SOCKET_ALIVE && s->status != SOCKET_HALFCLOSE) {
|
||||||
try_close(self, s);
|
s->status = SOCKET_HALFCLOSE;
|
||||||
|
try_close(self, s);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|||||||
Reference in New Issue
Block a user