diff -Naur openssh-4.0p1-1/channels.c openssh-4.0p1-2/channels.c
--- openssh-4.0p1-1/channels.c	2005-03-01 02:24:33.000000000 -0800
+++ openssh-4.0p1-2/channels.c	2005-04-04 17:27:44.230250000 -0700
@@ -2370,9 +2370,15 @@
 	if (compat20) {
 		const char *address_to_bind;
 		if (listen_host == NULL)
-			address_to_bind = "localhost";
+			if (datafellows & SSH_BUG_NUMERICRFWDADDR)
+				address_to_bind = "0.0.0.0";
+			else
+				address_to_bind = "localhost";
 		else if (*listen_host == '\0' || strcmp(listen_host, "*") == 0)
-			address_to_bind = "";
+			if (datafellows & SSH_BUG_NUMERICRFWDADDR)
+				address_to_bind = "0.0.0.0";
+			else
+				address_to_bind = "";
 		else
 			address_to_bind = listen_host;
 
diff -Naur openssh-4.0p1-1/compat.c openssh-4.0p1-2/compat.c
--- openssh-4.0p1-1/compat.c	2005-03-01 02:24:33.000000000 -0800
+++ openssh-4.0p1-2/compat.c	2005-04-04 17:27:49.636500000 -0700
@@ -127,7 +127,7 @@
 		{ "2.3.*",		SSH_BUG_DEBUG|SSH_BUG_RSASIGMD5|
 					SSH_BUG_FIRSTKEX },
 		{ "2.4",		SSH_OLD_SESSIONID },	/* Van Dyke */
-		{ "2.*",		SSH_BUG_DEBUG|SSH_BUG_FIRSTKEX },
+		{ "2.*",		SSH_BUG_DEBUG|SSH_BUG_FIRSTKEX|SSH_BUG_NUMERICRFWDADDR },
 		{ "3.0.*",		SSH_BUG_DEBUG },
 		{ "3.0 SecureCRT*",	SSH_OLD_SESSIONID },
 		{ "1.7 SecureFX*",	SSH_OLD_SESSIONID },
diff -Naur openssh-4.0p1-1/compat.h openssh-4.0p1-2/compat.h
--- openssh-4.0p1-1/compat.h	2005-03-01 02:24:33.000000000 -0800
+++ openssh-4.0p1-2/compat.h	2005-04-04 17:27:37.792750000 -0700
@@ -56,6 +56,7 @@
 #define SSH_BUG_PROBE		0x00400000
 #define SSH_BUG_FIRSTKEX	0x00800000
 #define SSH_OLD_FORWARD_ADDR	0x01000000
+#define SSH_BUG_NUMERICRFWDADDR 0x02000000
 
 void     enable_compat13(void);
 void     enable_compat20(void);
