mirror of
https://github.com/nmap/nmap.git
synced 2025-12-17 13:09:02 +00:00
Quit on EOF in non-TCP mode.
Apparently SCTP can't have the same kind of half-open sockets that TCP has. When one direction is closed, we can't do anything further with the socket. http://seclists.org/nmap-dev/2013/q1/227
This commit is contained in:
@@ -786,8 +786,8 @@ static void read_stdin_handler(nsock_pool nsp, nsock_event evt, void *data)
|
|||||||
|
|
||||||
if (status == NSE_STATUS_EOF) {
|
if (status == NSE_STATUS_EOF) {
|
||||||
shutdown(nsi_getsd(cs.sock_nsi), SHUT_WR);
|
shutdown(nsi_getsd(cs.sock_nsi), SHUT_WR);
|
||||||
/* In --send-only mode, exit after EOF on stdin. */
|
/* In --send-only mode or non-TCP mode, exit after EOF on stdin. */
|
||||||
if (o.sendonly)
|
if (o.proto != IPPROTO_TCP || (o.proto == IPPROTO_TCP && o.sendonly))
|
||||||
nsock_loop_quit(nsp);
|
nsock_loop_quit(nsp);
|
||||||
return;
|
return;
|
||||||
} else if (status == NSE_STATUS_ERROR) {
|
} else if (status == NSE_STATUS_ERROR) {
|
||||||
@@ -833,8 +833,8 @@ static void read_socket_handler(nsock_pool nsp, nsock_event evt, void *data)
|
|||||||
|
|
||||||
if (status == NSE_STATUS_EOF) {
|
if (status == NSE_STATUS_EOF) {
|
||||||
Close(STDOUT_FILENO);
|
Close(STDOUT_FILENO);
|
||||||
/* In --recv-only mode, exit after EOF on the socket. */
|
/* In --recv-only mode or non-TCP mode, exit after EOF on the socket. */
|
||||||
if (o.recvonly)
|
if (o.proto != IPPROTO_TCP || (o.proto == IPPROTO_TCP && o.recvonly))
|
||||||
nsock_loop_quit(nsp);
|
nsock_loop_quit(nsp);
|
||||||
return;
|
return;
|
||||||
} else if (status == NSE_STATUS_ERROR) {
|
} else if (status == NSE_STATUS_ERROR) {
|
||||||
|
|||||||
@@ -331,7 +331,7 @@ static int ncat_listen_stream(int proto)
|
|||||||
/* Read from stdin and write to all clients. */
|
/* Read from stdin and write to all clients. */
|
||||||
rc = read_stdin();
|
rc = read_stdin();
|
||||||
if (rc == 0) {
|
if (rc == 0) {
|
||||||
if (o.sendonly) {
|
if (o.proto != IPPROTO_TCP || (o.proto == IPPROTO_TCP && o.sendonly)) {
|
||||||
/* There will be nothing more to send. If we're not
|
/* There will be nothing more to send. If we're not
|
||||||
receiving anything, we can quit here. */
|
receiving anything, we can quit here. */
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user