Adam Tkac 2ad61df
--- netkit-telnet-0.17/telnetd/telnetd.8.nodns	2000-07-31 01:57:10.000000000 +0200
Adam Tkac 2ad61df
+++ netkit-telnet-0.17/telnetd/telnetd.8	2007-04-13 10:58:27.000000000 +0200
Adam Tkac 2ad61df
@@ -123,6 +123,8 @@
Adam Tkac 2ad61df
 .Xr login 1
Adam Tkac 2ad61df
 program.
Adam Tkac 2ad61df
 .El
Adam Tkac 2ad61df
+.It Fl c
Adam Tkac 2ad61df
+This option disables reverse dns checking. Of course that security is lower with this option
Adam Tkac 2ad61df
 .It Fl D Ar debugmode
Adam Tkac 2ad61df
 This option may be used for debugging purposes.  This allows
Adam Tkac 2ad61df
 .Nm telnetd
Adam Tkac 2ad61df
--- netkit-telnet-0.17/telnetd/telnetd.c.nodns	2007-04-13 10:49:57.000000000 +0200
Adam Tkac 2ad61df
+++ netkit-telnet-0.17/telnetd/telnetd.c	2007-04-13 10:49:57.000000000 +0200
Adam Tkac 2ad61df
@@ -83,6 +83,7 @@
Adam Tkac 2ad61df
 
Adam Tkac 2ad61df
 int debug = 0;
Adam Tkac 2ad61df
 int keepalive = 1;
Adam Tkac 2ad61df
+int nodns = 0;
Adam Tkac 2ad61df
 char *loginprg = _PATH_LOGIN;
Adam Tkac 2ad61df
 char *progname;
Adam Tkac 2ad61df
 
Adam Tkac 2ad61df
@@ -111,7 +112,7 @@
Adam Tkac 2ad61df
 
Adam Tkac 2ad61df
 	progname = *argv;
Adam Tkac 2ad61df
 
Adam Tkac 2ad61df
-	while ((ch = getopt(argc, argv, "d:a:e:lhnr:I:D:B:sS:a:X:L:")) != EOF) {
Adam Tkac 2ad61df
+	while ((ch = getopt(argc, argv, "cd:a:e:lhnr:I:D:B:sS:a:X:L:")) != EOF) {
Adam Tkac 2ad61df
 		switch(ch) {
Adam Tkac 2ad61df
 
Adam Tkac 2ad61df
 #ifdef	AUTHENTICATE
Adam Tkac 2ad61df
@@ -147,7 +148,9 @@
Adam Tkac 2ad61df
 			bftpd++;
Adam Tkac 2ad61df
 			break;
Adam Tkac 2ad61df
 #endif /* BFTPDAEMON */
Adam Tkac 2ad61df
-
Adam Tkac 2ad61df
+		case 'c':
Adam Tkac 2ad61df
+			nodns++;
Adam Tkac 2ad61df
+			break;
Adam Tkac 2ad61df
 		case 'd':
Adam Tkac 2ad61df
 			if (strcmp(optarg, "ebug") == 0) {
Adam Tkac 2ad61df
 				debug++;
Adam Tkac 2ad61df
@@ -652,6 +655,9 @@
Adam Tkac 2ad61df
 	char namebuf[255];
Adam Tkac 2ad61df
 
Adam Tkac 2ad61df
 	error = getnameinfo(who, wholen, namebuf, sizeof(namebuf), NULL, 0, 0);
Adam Tkac 2ad61df
+
Adam Tkac 2ad61df
+	if ((error == EAI_AGAIN) && nodns)
Adam Tkac 2ad61df
+		error = getnameinfo(who, wholen, namebuf, sizeof(namebuf), NULL, 0, NI_NUMERICHOST);
Adam Tkac 2ad61df
 	
Adam Tkac 2ad61df
 	if (error) {
Adam Tkac 2ad61df
 		perror("getnameinfo: localhost");
Adam Tkac 2ad61df
@@ -688,7 +694,10 @@
Adam Tkac 2ad61df
 		hints.ai_socktype = SOCK_STREAM;
Adam Tkac 2ad61df
 		hints.ai_flags = AI_ADDRCONFIG;
Adam Tkac 2ad61df
 
Adam Tkac 2ad61df
-		gethostname(host_name, sizeof(host_name));
Adam Tkac 2ad61df
+		if(nodns)
Adam Tkac 2ad61df
+			sprintf(host_name, "localhost", sizeof(host_name));
Adam Tkac 2ad61df
+		else
Adam Tkac 2ad61df
+			gethostname(host_name, sizeof(host_name));
Adam Tkac 2ad61df
 		if ((e = getaddrinfo(host_name, NULL, &hints, &res)) != 0) {
Adam Tkac 2ad61df
 			perror("getaddrinfo: localhost");
Adam Tkac 2ad61df
 			perror(gai_strerror(e));