head 1.5; access; symbols pkgsrc-2026Q1:1.5.0.192 pkgsrc-2026Q1-base:1.5 pkgsrc-2025Q4:1.5.0.190 pkgsrc-2025Q4-base:1.5 pkgsrc-2025Q3:1.5.0.188 pkgsrc-2025Q3-base:1.5 pkgsrc-2025Q2:1.5.0.186 pkgsrc-2025Q2-base:1.5 pkgsrc-2025Q1:1.5.0.184 pkgsrc-2025Q1-base:1.5 pkgsrc-2024Q4:1.5.0.182 pkgsrc-2024Q4-base:1.5 pkgsrc-2024Q3:1.5.0.180 pkgsrc-2024Q3-base:1.5 pkgsrc-2024Q2:1.5.0.178 pkgsrc-2024Q2-base:1.5 pkgsrc-2024Q1:1.5.0.176 pkgsrc-2024Q1-base:1.5 pkgsrc-2023Q4:1.5.0.174 pkgsrc-2023Q4-base:1.5 pkgsrc-2023Q3:1.5.0.172 pkgsrc-2023Q3-base:1.5 pkgsrc-2023Q2:1.5.0.170 pkgsrc-2023Q2-base:1.5 pkgsrc-2023Q1:1.5.0.168 pkgsrc-2023Q1-base:1.5 pkgsrc-2022Q4:1.5.0.166 pkgsrc-2022Q4-base:1.5 pkgsrc-2022Q3:1.5.0.164 pkgsrc-2022Q3-base:1.5 pkgsrc-2022Q2:1.5.0.162 pkgsrc-2022Q2-base:1.5 pkgsrc-2022Q1:1.5.0.160 pkgsrc-2022Q1-base:1.5 pkgsrc-2021Q4:1.5.0.158 pkgsrc-2021Q4-base:1.5 pkgsrc-2021Q3:1.5.0.156 pkgsrc-2021Q3-base:1.5 pkgsrc-2021Q2:1.5.0.154 pkgsrc-2021Q2-base:1.5 pkgsrc-2021Q1:1.5.0.152 pkgsrc-2021Q1-base:1.5 pkgsrc-2020Q4:1.5.0.150 pkgsrc-2020Q4-base:1.5 pkgsrc-2020Q3:1.5.0.148 pkgsrc-2020Q3-base:1.5 pkgsrc-2020Q2:1.5.0.144 pkgsrc-2020Q2-base:1.5 pkgsrc-2020Q1:1.5.0.124 pkgsrc-2020Q1-base:1.5 pkgsrc-2019Q4:1.5.0.146 pkgsrc-2019Q4-base:1.5 pkgsrc-2019Q3:1.5.0.142 pkgsrc-2019Q3-base:1.5 pkgsrc-2019Q2:1.5.0.140 pkgsrc-2019Q2-base:1.5 pkgsrc-2019Q1:1.5.0.138 pkgsrc-2019Q1-base:1.5 pkgsrc-2018Q4:1.5.0.136 pkgsrc-2018Q4-base:1.5 pkgsrc-2018Q3:1.5.0.134 pkgsrc-2018Q3-base:1.5 pkgsrc-2018Q2:1.5.0.132 pkgsrc-2018Q2-base:1.5 pkgsrc-2018Q1:1.5.0.130 pkgsrc-2018Q1-base:1.5 pkgsrc-2017Q4:1.5.0.128 pkgsrc-2017Q4-base:1.5 pkgsrc-2017Q3:1.5.0.126 pkgsrc-2017Q3-base:1.5 pkgsrc-2017Q2:1.5.0.122 pkgsrc-2017Q2-base:1.5 pkgsrc-2017Q1:1.5.0.120 pkgsrc-2017Q1-base:1.5 pkgsrc-2016Q4:1.5.0.118 pkgsrc-2016Q4-base:1.5 pkgsrc-2016Q3:1.5.0.116 pkgsrc-2016Q3-base:1.5 pkgsrc-2016Q2:1.5.0.114 pkgsrc-2016Q2-base:1.5 pkgsrc-2016Q1:1.5.0.112 pkgsrc-2016Q1-base:1.5 pkgsrc-2015Q4:1.5.0.110 pkgsrc-2015Q4-base:1.5 pkgsrc-2015Q3:1.5.0.108 pkgsrc-2015Q3-base:1.5 pkgsrc-2015Q2:1.5.0.106 pkgsrc-2015Q2-base:1.5 pkgsrc-2015Q1:1.5.0.104 pkgsrc-2015Q1-base:1.5 pkgsrc-2014Q4:1.5.0.102 pkgsrc-2014Q4-base:1.5 pkgsrc-2014Q3:1.5.0.100 pkgsrc-2014Q3-base:1.5 pkgsrc-2014Q2:1.5.0.98 pkgsrc-2014Q2-base:1.5 pkgsrc-2014Q1:1.5.0.96 pkgsrc-2014Q1-base:1.5 pkgsrc-2013Q4:1.5.0.94 pkgsrc-2013Q4-base:1.5 pkgsrc-2013Q3:1.5.0.92 pkgsrc-2013Q3-base:1.5 pkgsrc-2013Q2:1.5.0.90 pkgsrc-2013Q2-base:1.5 pkgsrc-2013Q1:1.5.0.88 pkgsrc-2013Q1-base:1.5 pkgsrc-2012Q4:1.5.0.86 pkgsrc-2012Q4-base:1.5 pkgsrc-2012Q3:1.5.0.84 pkgsrc-2012Q3-base:1.5 pkgsrc-2012Q2:1.5.0.82 pkgsrc-2012Q2-base:1.5 pkgsrc-2012Q1:1.5.0.80 pkgsrc-2012Q1-base:1.5 pkgsrc-2011Q4:1.5.0.78 pkgsrc-2011Q4-base:1.5 pkgsrc-2011Q3:1.5.0.76 pkgsrc-2011Q3-base:1.5 pkgsrc-2011Q2:1.5.0.74 pkgsrc-2011Q2-base:1.5 pkgsrc-2011Q1:1.5.0.72 pkgsrc-2011Q1-base:1.5 pkgsrc-2010Q4:1.5.0.70 pkgsrc-2010Q4-base:1.5 pkgsrc-2010Q3:1.5.0.68 pkgsrc-2010Q3-base:1.5 pkgsrc-2010Q2:1.5.0.66 pkgsrc-2010Q2-base:1.5 pkgsrc-2010Q1:1.5.0.64 pkgsrc-2010Q1-base:1.5 pkgsrc-2009Q4:1.5.0.62 pkgsrc-2009Q4-base:1.5 pkgsrc-2009Q3:1.5.0.60 pkgsrc-2009Q3-base:1.5 pkgsrc-2009Q2:1.5.0.58 pkgsrc-2009Q2-base:1.5 pkgsrc-2009Q1:1.5.0.56 pkgsrc-2009Q1-base:1.5 pkgsrc-2008Q4:1.5.0.54 pkgsrc-2008Q4-base:1.5 pkgsrc-2008Q3:1.5.0.52 pkgsrc-2008Q3-base:1.5 cube-native-xorg:1.5.0.50 cube-native-xorg-base:1.5 pkgsrc-2008Q2:1.5.0.48 pkgsrc-2008Q2-base:1.5 cwrapper:1.5.0.46 pkgsrc-2008Q1:1.5.0.44 pkgsrc-2008Q1-base:1.5 pkgsrc-2007Q4:1.5.0.42 pkgsrc-2007Q4-base:1.5 pkgsrc-2007Q3:1.5.0.40 pkgsrc-2007Q3-base:1.5 pkgsrc-2007Q2:1.5.0.38 pkgsrc-2007Q2-base:1.5 pkgsrc-2007Q1:1.5.0.36 pkgsrc-2007Q1-base:1.5 pkgsrc-2006Q4:1.5.0.34 pkgsrc-2006Q4-base:1.5 pkgsrc-2006Q3:1.5.0.32 pkgsrc-2006Q3-base:1.5 pkgsrc-2006Q2:1.5.0.30 pkgsrc-2006Q2-base:1.5 pkgsrc-2006Q1:1.5.0.28 pkgsrc-2006Q1-base:1.5 pkgsrc-2005Q4:1.5.0.26 pkgsrc-2005Q4-base:1.5 pkgsrc-2005Q3:1.5.0.24 pkgsrc-2005Q3-base:1.5 pkgsrc-2005Q2:1.5.0.22 pkgsrc-2005Q2-base:1.5 pkgsrc-2005Q1:1.5.0.20 pkgsrc-2005Q1-base:1.5 pkgsrc-2004Q4:1.5.0.18 pkgsrc-2004Q4-base:1.5 pkgsrc-2004Q3:1.5.0.16 pkgsrc-2004Q3-base:1.5 pkgsrc-2004Q2:1.5.0.14 pkgsrc-2004Q2-base:1.5 pkgsrc-2004Q1:1.5.0.12 pkgsrc-2004Q1-base:1.5 pkgsrc-2003Q4:1.5.0.10 pkgsrc-2003Q4-base:1.5 netbsd-1-6-1:1.5.0.6 netbsd-1-6-1-base:1.5 netbsd-1-6:1.5.0.8 netbsd-1-6-RELEASE-base:1.5 pkgviews:1.5.0.4 pkgviews-base:1.5 buildlink2:1.5.0.2 buildlink2-base:1.5 netbsd-1-5-PATCH003:1.5 netbsd-1-5-PATCH001:1.5; locks; strict; comment @# @; 1.5 date 2001.03.12.13.23.00; author tron; state Exp; branches; next 1.4; 1.4 date 2001.03.10.22.05.54; author tron; state Exp; branches; next 1.3; 1.3 date 2001.02.25.11.10.13; author tron; state Exp; branches; next 1.2; 1.2 date 2001.02.24.22.40.40; author tron; state Exp; branches; next 1.1; 1.1 date 2001.02.23.22.19.42; author tron; state Exp; branches; next ; desc @@ 1.5 log @Don't try to connect to alternate IP addresses of the news server if the user cancelled the operation. Bump version number to "1.0nb6". @ text @$NetBSD$ --- src/server.c.orig Fri Jan 9 18:16:22 1998 +++ src/server.c Mon Mar 12 14:11:00 2001 @@@@ -2,19 +2,21 @@@@ * Copyright (C) 1995, 1996 Karl-Johan Johnsson. */ +#include +#include + #include "global.h" #include "child.h" #include "codes.h" #include "connect.h" #include "file.h" #include "resource.h" +#include "sysdeps.h" #include "server.h" #include "util.h" #include "widgets.h" #include "xutil.h" -#include "sysdeps.h" - struct SERVER { int fd; char *buffer; @@@@ -128,37 +130,70 @@@@ * tell != 0 means tell about errors * tell > 1 means say what you're doing */ -int server_open(SERVER *server, struct SERV_ADDR *addr, int tell) +int server_open(SERVER *server, SERV_ADDR *addr, int tell) { - long tmp; + int tmp; server_close(server); - server->fd = open_socket(); - if (server->fd < 0) { - set_message("Error: Failed to create socket!", True); - return -1; - } + while (addr) { + server->fd = open_socket(addr); + if (server->fd < 0) { + set_message("Error: Failed to create socket!", True); + return -1; + } - if (tell > 1) - set_message("Server contacted, waiting for response...", False); + if (tell > 1) + set_message("Server contacted, waiting for response...", False); - tmp = connect_socket(server->fd, addr); + if (connect_socket(server->fd, addr) == 0) + break; - if (tmp < 0 && would_block(server->fd, errno)) { - if (tell == 0) - return 0; /* don't block */ - - tmp = 0; - do_wait(&server->fd, True, server->quit_func, server); - if (server->fd < 0) - return -1; + if (would_block(server->fd, errno)) { + if (tell == 0) + return 0; /* don't block */ + + do_wait(&server->fd, True, server->quit_func, server); + if (server->fd < 0) + return -1; + else { +#ifdef __NetBSD__ + socklen_t length; + int error; +#else + int length, error; +#endif + length = sizeof(error); + if (getsockopt(server->fd, SOL_SOCKET, SO_ERROR, + (char *)&error, &length) == 0) { + if (error == 0) + break; + else + errno = error; + } + } + } + + server_close(server); + addr = next_addr(addr); + } + + if (server->fd < 0) { + if (tell) { + char message[128]; + char *tmp = error_string(errno); + + if (!tmp) + tmp = "Connection failed"; + sprintf(message, "Error: %s!", tmp); + set_message(message, True); + } + return -1; } server->buffer[0] = '\0'; - if (tmp >= 0) - do { - tmp = read(server->fd, server->buffer, server->len); - } while (tmp < 0 && errno == EINTR); + do { + tmp = read(server->fd, server->buffer, server->len); + } while (tmp < 0 && errno == EINTR); if (tmp >= 0) { server->buffer[tmp] = '\0'; @ 1.4 log @Further improvement of IPv6 patches: - Make IPv6 addresses (not names) work. You still need to specify the port number explicitly in this case. - Fix bug in connection loop which caused PR pkg/12329. The version number is bumped to "1.0nb5". @ text @d4 1 a4 1 +++ src/server.c Sat Mar 10 23:00:44 2001 d29 1 a29 1 @@@@ -128,37 +130,68 @@@@ d74 3 a76 1 + if (server->fd >= 0) { @ 1.3 log @Fix another bug in IPv6 support. Bump version number to 1.0nb4. @ text @d4 1 a4 1 +++ src/server.c Sun Feb 25 12:07:35 2001 d29 1 a29 1 @@@@ -128,30 +130,39 @@@@ d36 2 a37 1 long tmp; d39 1 a39 1 - server_close(server); a45 1 + server_close(server); d58 2 a59 1 + tmp = connect_socket(server->fd, addr); d69 1 a69 1 + if (tmp < 0 && would_block(server->fd, errno)) { a72 1 + tmp = 0; d74 16 a89 2 + if (server->fd >= 0) + break; d92 1 d96 10 a105 2 + if (!addr) { + server_close(server); d110 10 @ 1.2 log @Bump the version number to 1.0nb3 after major rework of IPv6 patch: - No busy loops when connecting to the NNTP server. - Handle multiple records return by getaddrinfo(3) at the proper location. - Avoid unnecessary socket creations and deletions by always passing the correct address family to open_socket(). @ text @d4 1 a4 1 +++ src/server.c Sat Feb 24 23:24:45 2001 d29 1 a29 1 @@@@ -128,30 +130,35 @@@@ d44 8 a51 1 - d54 3 a56 1 - d58 2 a59 1 - d67 1 a67 13 + while (addr) { + server_close(server); + server->fd = open_socket(addr); + if (server->fd < 0) { + set_message("Error: Failed to create socket!", True); return -1; + } + + if (tell > 1) + set_message("Server contacted, waiting for response...", False); + + tmp = connect_socket(server->fd, addr); + a75 1 + d79 5 @ 1.1 log @Add IPv6 support and bump version number to 1.0nb2. @ text @d4 1 a4 1 +++ src/server.c Fri Feb 23 22:41:48 2001 d29 1 a29 1 @@@@ -128,12 +130,12 @@@@ d38 1 a38 1 server_close(server); d40 45 a84 4 + server->fd = open_socket(AF_INET); if (server->fd < 0) { set_message("Error: Failed to create socket!", True); return -1; @