123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- Index: netcat-openbsd-1.89/netcat.c
- ===================================================================
- --- netcat-openbsd-1.89.orig/netcat.c 2008-01-22 16:17:18.000000000 -0500
- +++ netcat-openbsd-1.89/netcat.c 2008-01-22 16:17:25.000000000 -0500
- @@ -618,9 +618,7 @@
- if ((n = read(nfd, buf, plen)) < 0)
- return;
- else if (n == 0) {
- - shutdown(nfd, SHUT_RD);
- - pfd[0].fd = -1;
- - pfd[0].events = 0;
- + goto shutdown_rd;
- } else {
- if (tflag)
- atelnet(nfd, buf, n);
- @@ -628,18 +626,30 @@
- return;
- }
- }
- + else if (pfd[0].revents & POLLHUP) {
- + shutdown_rd:
- + shutdown(nfd, SHUT_RD);
- + pfd[0].fd = -1;
- + pfd[0].events = 0;
- + }
-
- - if (!dflag && pfd[1].revents & POLLIN) {
- + 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;
- + goto shutdown_wr;
- } else {
- if (atomicio(vwrite, nfd, buf, n) != n)
- return;
- }
- + }
- + else if (pfd[1].revents & POLLHUP) {
- + shutdown_wr:
- + shutdown(nfd, SHUT_WR);
- + pfd[1].fd = -1;
- + pfd[1].events = 0;
- + }
- }
- }
- }
|