ALT Linux repositórios
S: | 4.0.20100725-alt3 |
5.0: | 4.0.20061122-alt2 |
4.1: | 4.0.20061122-alt1 |
4.0: | 4.0.20061122-alt1 |
3.0: | 3.6-alt2 |
Group :: Rede/Outros
RPM: netcat
Main Changelog Spec Patches Sources Download Gear Bugs e FR Repocop
Patch: netcat-4.0.20100725-jzeleny-pollhup.patch
Download
Download
--- src/usr.bin/nc/netcat.c
+++ src/usr.bin/nc/netcat.c
@@ -798,17 +798,29 @@ readwrite(int nfd)
return;
}
}
+ else if (pfd[0].revents & POLLHUP) {
+ shutdown(nfd, SHUT_RD);
+ pfd[0].fd = -1;
+ pfd[0].events = 0;
+ }
- if (!dflag && pfd[1].revents & POLLIN) {
- if ((n = read(wfd, buf, plen)) < 0)
- return;
- else if (n == 0) {
+ if (!dflag) {
+ if (pfd[1].revents & POLLIN) {
+ if ((n = read(wfd, buf, plen)) < 0)
+ return;
+ else if (n == 0) {
+ shutdown(nfd, SHUT_WR);
+ pfd[1].fd = -1;
+ pfd[1].events = 0;
+ } else {
+ if (atomicio(vwrite, nfd, buf, n) != n)
+ return;
+ }
+ }
+ else if (pfd[1].revents & POLLHUP) {
shutdown(nfd, SHUT_WR);
pfd[1].fd = -1;
pfd[1].events = 0;
- } else {
- if (atomicio(vwrite, nfd, buf, n) != n)
- return;
}
}
}