Committer  : entrope
CVSROOT    : /cvsroot/undernet-ircu
Module     : ircu2.10
Branch tags: u2_10_12_branch
Commit time: 2007-03-18 02:33:14 UTC

Modified files:
  Tag: u2_10_12_branch
     ircd/listener.c ChangeLog

Log message:

Do not try to listen on (corrupt) IPv4 versions of IPv6 native addresses.

---------------------- diff included ----------------------
Index: ircu2.10/ChangeLog
diff -u ircu2.10/ChangeLog:1.710.2.162 ircu2.10/ChangeLog:1.710.2.163
--- ircu2.10/ChangeLog:1.710.2.162      Sat Mar 17 18:46:59 2007
+++ ircu2.10/ChangeLog  Sat Mar 17 19:33:02 2007
@@ -1,5 +1,10 @@
 2007-03-17  Michael Poole <[EMAIL PROTECTED]>
 
+       * ircd/listener.c (add_listener): Only try to create IPv6 sockets
+       for IPv6-compatible addresses; likewise for IPv4.
+
+2007-03-17  Michael Poole <[EMAIL PROTECTED]>
+
        * doc/example.conf (Operator): Update documentation to mention
        more than one host entry is allowed.
        (Motd): Likewise.
Index: ircu2.10/ircd/listener.c
diff -u ircu2.10/ircd/listener.c:1.28.2.4 ircu2.10/ircd/listener.c:1.28.2.5
--- ircu2.10/ircd/listener.c:1.28.2.4   Thu Dec  7 16:44:38 2006
+++ ircu2.10/ircd/listener.c    Sat Mar 17 19:33:01 2007
@@ -18,7 +18,7 @@
  */
 /** @file
  * @brief Implementation for handling listening sockets.
- * @version $Id: listener.c,v 1.28.2.4 2006/12/08 00:44:38 entrope Exp $
+ * @version $Id: listener.c,v 1.28.2.5 2007/03/18 02:33:01 entrope Exp $
  */
 #include "config.h"
 
@@ -315,7 +315,8 @@
     listener->mask_bits = 0;
 
 #ifdef IPV6
-  if (FlagHas(&listener->flags, LISTEN_IPV6)) {
+  if (FlagHas(&listener->flags, LISTEN_IPV6)
+      && (irc_in_addr_unspec(&vaddr) || !irc_in_addr_is_ipv4(&vaddr))) {
     if (listener->fd_v6 >= 0) {
       set_listener_options(listener, listener->fd_v6);
       okay = 1;
@@ -330,7 +331,8 @@
   }
 #endif
 
-  if (FlagHas(&listener->flags, LISTEN_IPV4)) {
+  if (FlagHas(&listener->flags, LISTEN_IPV4)
+      && (irc_in_addr_unspec(&vaddr) || irc_in_addr_is_ipv4(&vaddr))) {
     if (listener->fd_v4 >= 0) {
       set_listener_options(listener, listener->fd_v4);
       okay = 1;
----------------------- End of diff -----------------------
_______________________________________________
Patches mailing list
[email protected]
http://undernet.sbg.org/mailman/listinfo/patches

Reply via email to