← Commit list

817d75e25b

Viktor Szakats
Viktor Szakats
2026-08-07
SUCCESS Duration: 392s

Subject

tests/server/tftpd: replace duplicate code with `open_udp_sock()` call

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

tests/server/tftpd.c+2 -94
@@ -1005,15 +1005,10 @@ static int do_tftp(struct testcase *test, struct tftphdr *tp, ssize_t size)
static int test_tftpd(int argc, const char **argv)
{
- srvr_sockaddr_union_t me;
struct tftphdr *tp;
ssize_t n = 0;
int arg = 1;
curl_socket_t sock = CURL_SOCKET_BAD;
- int flag;
- int rc;
- int sockerr;
- char errbuf[STRERROR_LEN];
struct testcase test;
int result = 0;
srvr_sockaddr_union_t from;
@@ -1107,96 +1102,9 @@ static int test_tftpd(int argc, const char **argv)
install_signal_handlers(TRUE);
-#ifdef USE_IPV6
- if(socket_domain == AF_INET6)
- sock = socket(AF_INET6, SOCK_DGRAM, 0);
- else
-#endif
- sock = socket(AF_INET, SOCK_DGRAM, 0);
-
- if(sock == CURL_SOCKET_BAD) {
- sockerr = SOCKERRNO;
- logmsg("Error creating socket (%d) %s",
- sockerr, curlx_strerror(sockerr, errbuf, sizeof(errbuf)));
- result = 1;
- goto tftpd_cleanup;
- }
-
- flag = 1;
- if(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (void *)&flag, sizeof(flag))) {
- sockerr = SOCKERRNO;
- logmsg("setsockopt(SO_REUSEADDR) failed with error (%d) %s",
- sockerr, curlx_strerror(sockerr, errbuf, sizeof(errbuf)));
- result = 1;
- goto tftpd_cleanup;
- }
-
-#ifdef USE_IPV6
- if(socket_domain == AF_INET6) {
- memset(&me.sa6, 0, sizeof(me.sa6));
- me.sa6.sin6_family = AF_INET6;
- me.sa6.sin6_addr = in6addr_any;
- me.sa6.sin6_port = htons(server_port);
- rc = bind(sock, &me.sa, sizeof(me.sa6));
- }
- else
-#endif
- {
- memset(&me.sa4, 0, sizeof(me.sa4));
- me.sa4.sin_family = AF_INET;
- me.sa4.sin_addr.s_addr = INADDR_ANY;
- me.sa4.sin_port = htons(server_port);
- rc = bind(sock, &me.sa, sizeof(me.sa4));
- }
- if(rc) {
- sockerr = SOCKERRNO;
- logmsg("Error binding socket on port %hu (%d) %s", server_port,
- sockerr, curlx_strerror(sockerr, errbuf, sizeof(errbuf)));
- result = 1;
+ result = open_udp_sock(&sock, &server_port);
+ if(result)
goto tftpd_cleanup;
- }
-
- if(!server_port) {
- /* The system was supposed to choose a port number, figure out which
- port we actually got and update the listener port value with it. */
- curl_socklen_t la_size;
- srvr_sockaddr_union_t localaddr;
- memset(&localaddr, 0, sizeof(localaddr));
-#ifdef USE_IPV6
- if(socket_domain == AF_INET6)
- la_size = sizeof(localaddr.sa6);
- else
-#endif
- la_size = sizeof(localaddr.sa4);
- if(getsockname(sock, &localaddr.sa, &la_size) < 0) {
- sockerr = SOCKERRNO;
- logmsg("getsockname() failed with error (%d) %s",
- sockerr, curlx_strerror(sockerr, errbuf, sizeof(errbuf)));
- sclose(sock);
- goto tftpd_cleanup;
- }
- switch(localaddr.sa.sa_family) {
- case AF_INET:
- server_port = ntohs(localaddr.sa4.sin_port);
- break;
-#ifdef USE_IPV6
- case AF_INET6:
- server_port = ntohs(localaddr.sa6.sin6_port);
- break;
-#endif
- default:
- break;
- }
- if(!server_port) {
- /* Real failure, listener port shall not be zero beyond this point. */
- logmsg("Apparently getsockname() succeeded, with listener port zero.");
- logmsg("A valid reason for this failure is a binary built without");
- logmsg("proper network library linkage. This might not be the only");
- logmsg("reason, but double check it before anything else.");
- result = 2;
- goto tftpd_cleanup;
- }
- }
tftpd_wrotepidfile = write_pidfile(pidname);
if(!tftpd_wrotepidfile) {