Commit f69b52b1 authored by Tatsuhiro Tsujikawa's avatar Tatsuhiro Tsujikawa

nghttpx: Attempt to avoid TCP RST on socket closure on Linux

parent 1e1d908c
...@@ -126,7 +126,20 @@ void Connection::disconnect() { ...@@ -126,7 +126,20 @@ void Connection::disconnect() {
} }
if (fd != -1) { if (fd != -1) {
shutdown(fd, SHUT_WR); // At least for Linux, shutdown both sides, and continue to read
// until it gets EOF or error in order to avoid TCP RST.
shutdown(fd, SHUT_RDWR);
#ifdef __linux__
std::array<uint8_t, 16_k> b;
for (;;) {
ssize_t n;
while ((n = read(fd, b.data(), b.size())) == -1 && errno == EINTR)
;
if (n <= 0) {
break;
}
}
#endif // __linux__
close(fd); close(fd);
fd = -1; fd = -1;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment