Bug 1078244
| Summary: | ncat client hangs if server terminates first | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux 7 | Reporter: | Jan Stancek <jstancek> |
| Component: | nmap | Assignee: | Pavel Zhukov <pzhukov> |
| Status: | CLOSED WONTFIX | QA Contact: | qe-baseos-daemons |
| Severity: | unspecified | Docs Contact: | |
| Priority: | unspecified | ||
| Version: | 7.0 | CC: | bpeck, ccgurley, jaster, jburke, ovasik, pbunyan, thomas.oulevey |
| Target Milestone: | rc | ||
| Target Release: | --- | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | If docs needed, set a value | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2019-07-25 11:58:18 UTC | Type: | Bug |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
This is a side effect of a feature. ncat uses half-closed socket, so client/server can only read/write from the socket, not both. S: ncat -l 8888 C: ncat localhost 8888 instead of terminating the server, try this instead: S: HELLO S: <Ctrl-D> C: BYE What happened is that server closed socket for writing by calling shutdown(sd, SHUT_WR). Client sees this and continues, because it can still send data (if you do not use --recv-only option). Unfortunately, when socket is closed, ncat can't distinguish it whether it's closed or half closed, until it tries to send something. IN SHORT: This is not a bug, but expected behaviour. There is even a check for this in upstream regression test suite: """PASS Client closes stdout and keeps running after socket EOF""" I'm trying to discuss this with upstream if they would change the behaviour, but the response rate is really slow. I think, the chance for change is small, but to prevent close/re-open noise, I will move this bug to next release and hope I will have definitive answer by then. Anyway, consider this bug as closed notabug/wontfix for the time being. Upstream discussion: http://seclists.org/nmap-dev/2017/q2/67 *** Bug 1328996 has been marked as a duplicate of this bug. *** *** Bug 1548487 has been marked as a duplicate of this bug. *** Hello, Looks like it's time to close this bug finally as per https://bugzilla.redhat.com/show_bug.cgi?id=1078244#c3 and upstream discussion. |
Description of problem: ncat client doesn't exit if server terminates first. server client | ncat -l 8888 | | ncat localhost 8888; echo $? ^C | | # ncat keeps running, I have to | # press enter twice to get EPIPE | Or with unix sockets: server client | rm -f /tmp/nc.test | ncat -l -U /tmp/nc.test | | ncat -U /tmp/nc.test; echo $? ^C | | # ncat keeps running, I have to | # press enter to get EPIPE | With RHEL6.5 nc, client terminates as soon as server side terminates: server client | nc -l 8888 | | nc localhost 8888; echo $? ^C | | 0 | It seems to work fine when client terminates first: server client | ncat -l 8888; echo $? | | ncat localhost 8888 | ^C 0 | | server client | rm -f /tmp/nc.test | ncat -l -U /tmp/nc.test; echo $? | | ncat -U /tmp/nc.test | ^C 0 | | Version-Release number of selected component (if applicable): nmap-ncat-6.40-4.el7.x86_64 How reproducible: 100% Steps to Reproduce: see description Actual results: client side remains running Expected results: if server is not running anymore, client should exit Additional info: