Avoid double call of send_del() on write failure and from epoll loop.

This commit is contained in:
Ian Gulliver
2016-02-24 21:30:39 -08:00
parent a408ddba2d
commit b4171c971a

View File

@@ -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;
} }
} }
} }