Avoid double call of send_del() on write failure and from epoll loop.
This commit is contained in:
@@ -156,13 +156,11 @@ void send_write(struct packet *packet) {
|
|||||||
}
|
}
|
||||||
struct send *send = serializer->send_head;
|
struct send *send = serializer->send_head;
|
||||||
while (send) {
|
while (send) {
|
||||||
if (write(send->peer.fd, buf_at(&buf, 0), buf.length) == buf.length) {
|
if (write(send->peer.fd, buf_at(&buf, 0), buf.length) != buf.length) {
|
||||||
send = send->next;
|
// peer_loop() will see this shutdown and call send_del
|
||||||
} else {
|
shutdown(send->peer.fd, SHUT_RD | SHUT_WR);
|
||||||
struct send *next = send->next;
|
|
||||||
send_del(send);
|
|
||||||
send = next;
|
|
||||||
}
|
}
|
||||||
|
send = send->next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user