public inbox for linux-man@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] socket.7: be explicit that connect(2) respects SO_*TIMEO
@ 2022-11-28 20:58 Tycho Andersen
  2022-12-09 20:37 ` Alejandro Colomar
  0 siblings, 1 reply; 6+ messages in thread
From: Tycho Andersen @ 2022-11-28 20:58 UTC (permalink / raw)
  To: Alejandro Colomar, Michael Kerrisk; +Cc: linux-man, Tycho Andersen

Our group recently had some confusion around this. Although f327722042df
("socket.7: Explain effect of SO_SNDTIMEO for connect()") adds a mention of
connect(2), the wording around "Timeouts  only  have  effect  for  system
calls  that perform socket I/O" is slightly confusing: is connect(2) I/O?.
Let's just add connect(2) to the list of things that time out explicitly to
avoid any confusion.

Test program for grins:

#include <stdio.h>
#include <sys/socket.h>
#include <netinet/ip.h>
#include <arpa/inet.h>

int main(void)
{
	struct sockaddr_in servaddr = {
                /* tycho.pizza */
                .sin_addr.s_addr = inet_addr("192.241.255.151"),
                .sin_port = htons(443),
                .sin_family = AF_INET,
        };
	int fd;
	struct timeval timeout = {
		.tv_sec = 0,
		.tv_usec = 100,
	};

	fd = socket(AF_INET, SOCK_STREAM, 0);
	if (fd < 0) {
		perror("socket");
		return 1;
	}

	if (setsockopt(fd, SOL_SOCKET, SO_SNDTIMEO, &timeout, sizeof(timeout)) < 0) {
		perror("setsockopt");
		return 1;
	}

	if (connect(fd, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0) {
		perror("connect");
		return 1;
	}

	printf("connect successful\n");
	return 0;
}

$ ./so_sndtimeo
connect: Operation now in progress

Signed-off-by: Tycho Andersen <tycho@tycho.pizza>
---
 man7/socket.7 | 1 +
 1 file changed, 1 insertion(+)

diff --git a/man7/socket.7 b/man7/socket.7
index 2b191c783..c3c13cda6 100644
--- a/man7/socket.7
+++ b/man7/socket.7
@@ -838,6 +838,7 @@ just as if the socket was specified to be nonblocking.
 If the timeout is set to zero (the default),
 then the operation will never timeout.
 Timeouts only have effect for system calls that perform socket I/O (e.g.,
+.BR connect (2),
 .BR read (2),
 .BR recvmsg (2),
 .BR send (2),

base-commit: 60eb580d1e836977d57355b6519f32e37bdc3392
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-04-07 23:53 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-11-28 20:58 [PATCH] socket.7: be explicit that connect(2) respects SO_*TIMEO Tycho Andersen
2022-12-09 20:37 ` Alejandro Colomar
2022-12-09 23:51   ` Luis Javier Merino
2022-12-11 14:01     ` Alejandro Colomar
2022-12-11 15:59   ` Tycho Andersen
2023-04-07 23:53     ` Alejandro Colomar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox