On Sat Sep 5, 2026 at 12:35 PM CEST, Stuart Henderson wrote:
> On 2026/09/04 23:38, Alvar Penning wrote:
>> Since this should never could have worked, I have removed the call in my 
>> diff.
>
> Seems reasoanble-ish - the equivalent would be something using IPV6_TCLASS ..

My main goal was to unbreak the package, but you are right. I reworked
the diff for different setsockopt(2) calls based on the socket family.

Since this might also affect others, I also brought this upstream:
https://github.com/ngircd/ngircd/pull/346

Best,
Alvar


diff --git Makefile Makefile
index 18929caadd2..099ff908503 100644
--- Makefile
+++ Makefile
@@ -1,6 +1,6 @@
 COMMENT =      lightweight irc server
 
-DISTNAME =     ngircd-27
+DISTNAME =     ngircd-28
 
 CATEGORIES =   net
 
diff --git distinfo distinfo
index f7d160ce0dc..2ab15caa713 100644
--- distinfo
+++ distinfo
@@ -1,2 +1,2 @@
-SHA256 (ngircd-27.tar.gz) = /TjvITOdr4HWr0pjC6Oy3lGhtCwYGEPud2NaWmYf5zw=
-SIZE (ngircd-27.tar.gz) = 554709
+SHA256 (ngircd-28.tar.gz) = 1K5dT18T0Tb3fnqv8s3ID807mhcawxworbri9GQ8BKg=
+SIZE (ngircd-28.tar.gz) = 564580
diff --git patches/patch-src_ngircd_conn_c patches/patch-src_ngircd_conn_c
new file mode 100644
index 00000000000..d1747acfad3
--- /dev/null
+++ patches/patch-src_ngircd_conn_c
@@ -0,0 +1,61 @@
+Index: src/ngircd/conn.c
+--- src/ngircd/conn.c.orig
++++ src/ngircd/conn.c
+@@ -2186,6 +2186,7 @@ static bool
+ Init_Socket( int Sock )
+ {
+       int value;
++      socklen_t l;
+ 
+       if (!io_setnonblock(Sock)) {
+               Log(LOG_CRIT, "Can't enable non-blocking mode for socket: %s!",
+@@ -2205,15 +2206,40 @@ Init_Socket( int Sock )
+ 
+       /* Set type of service (TOS) */
+ #if defined(IPPROTO_IP) && defined(IPTOS_LOWDELAY)
+-      value = IPTOS_LOWDELAY;
+-      if (setsockopt(Sock, IPPROTO_IP, IP_TOS, &value,
+-                     (socklen_t) sizeof(value))) {
+-              LogDebug("Can't set socket option IP_TOS: %s!",
+-                       strerror(errno));
+-              /* ignore this error */
+-      } else
+-              LogDebug("IP_TOS on socket %d has been set to IPTOS_LOWDELAY.",
+-                       Sock);
++      l = (socklen_t)sizeof(value);
++      if (getsockopt(Sock, SOL_SOCKET, SO_DOMAIN, &value, &l) != 0) {
++              Log(LOG_ERR, "Can't get socket familiy: %s!",
++                      strerror(errno));
++      } else {
++              switch (value) {
++                      case AF_INET:
++                              value = IPTOS_LOWDELAY;
++                              if (setsockopt(Sock, IPPROTO_IP, IP_TOS, &value,
++                                               (socklen_t) sizeof(value))) {
++                                      Log(LOG_ERR, "Can't set socket option 
IP_TOS: %s!",
++                                              strerror(errno));
++                              } else {
++                                      LogDebug("IP_TOS on socket %d has been 
set to %d.",
++                                              Sock, value);
++                              }
++                              break;
++
++                      case AF_INET6:
++                              value = IPTOS_LOWDELAY;
++                              if (setsockopt(Sock, IPPROTO_IPV6, IPV6_TCLASS, 
&value,
++                                               (socklen_t) sizeof(value))) {
++                                      Log(LOG_ERR, "Can't set socket option 
IPV6_TCLASS: %s!",
++                                              strerror(errno));
++                              } else {
++                                      LogDebug("IPV6_TCLASS on socket %d has 
been set to %d.",
++                                              Sock, value);
++                              }
++                              break;
++
++                      default:
++                      Log(LOG_ERR, "Unexpected socket familiy %d", value);
++              }
++      }
+ #endif
+ 
+       return true;

Reply via email to