Adam Tkac 8e38eb3
--- netkit-telnet-0.17.orig/telnetd/telnetd.c.reallynodns	2009-03-12 14:32:29.000000000 -0700
Adam Tkac 8e38eb3
+++ netkit-telnet-0.17.orig/telnetd/telnetd.c	2009-03-12 14:51:59.000000000 -0700
Adam Tkac 8e38eb3
@@ -85,6 +85,7 @@
Adam Tkac 8e38eb3
 int keepalive = 1;
Adam Tkac 8e38eb3
 char *loginprg = _PATH_LOGIN;
Adam Tkac 8e38eb3
 char *progname;
Adam Tkac 8e38eb3
+int lookupself = 1;
Adam Tkac 8e38eb3
 
Adam Tkac 8e38eb3
 extern void usage(void);
Adam Tkac 8e38eb3
 
Adam Tkac 8e38eb3
@@ -111,7 +112,7 @@
Adam Tkac 8e38eb3
 
Adam Tkac 8e38eb3
 	progname = *argv;
Adam Tkac 8e38eb3
 
Adam Tkac 8e38eb3
-	while ((ch = getopt(argc, argv, "d:a:e:lhnr:I:D:B:sS:a:X:L:")) != EOF) {
Adam Tkac 8e38eb3
+	while ((ch = getopt(argc, argv, "d:a:e:lhnr:I:D:B:sS:a:X:L:N")) != EOF) {
Adam Tkac 8e38eb3
 		switch(ch) {
Adam Tkac 8e38eb3
 
Adam Tkac 8e38eb3
 #ifdef	AUTHENTICATE
Adam Tkac 8e38eb3
@@ -210,6 +211,10 @@
Adam Tkac 8e38eb3
 			keepalive = 0;
Adam Tkac 8e38eb3
 			break;
Adam Tkac 8e38eb3
 
Adam Tkac 8e38eb3
+                case 'N':
Adam Tkac 8e38eb3
+                        lookupself = 0;
Adam Tkac 8e38eb3
+                        break;
Adam Tkac 8e38eb3
+
Adam Tkac 8e38eb3
 #ifdef	SecurID
Adam Tkac 8e38eb3
 		case 's':
Adam Tkac 8e38eb3
 			/* SecurID required */
Adam Tkac 8e38eb3
@@ -393,6 +398,7 @@
Adam Tkac 8e38eb3
 #endif
Adam Tkac 8e38eb3
 	fprintf(stderr, " [-L login_program]");
Adam Tkac 8e38eb3
 	fprintf(stderr, " [-n]");
Adam Tkac 8e38eb3
+	fprintf(stderr, " [-N]");
Adam Tkac 8e38eb3
 #ifdef	SecurID
Adam Tkac 8e38eb3
 	fprintf(stderr, " [-s]");
Adam Tkac 8e38eb3
 #endif
Adam Tkac 8e38eb3
@@ -691,15 +697,20 @@
Adam Tkac 8e38eb3
 
Adam Tkac 8e38eb3
 		memset(&hints, '\0', sizeof(hints));
Adam Tkac 8e38eb3
 		hints.ai_socktype = SOCK_STREAM;
Adam Tkac 8e38eb3
-		hints.ai_flags = AI_ADDRCONFIG;
Adam Tkac 8e38eb3
+		hints.ai_flags = AI_CANONNAME;
Adam Tkac 8e38eb3
 
Adam Tkac 8e38eb3
 		gethostname(host_name, sizeof(host_name));
Adam Tkac 8e38eb3
-		if ((e = getaddrinfo(host_name, NULL, &hints, &res)) != 0) {
Adam Tkac 8e38eb3
-			if(e != EAI_AGAIN) {
Adam Tkac 8e38eb3
-				fprintf(stderr, "getaddrinfo: localhost %s\n", 
Adam Tkac 8e38eb3
-				        gai_strerror(e));
Adam Tkac 8e38eb3
-				exit(1);
Adam Tkac 8e38eb3
-			}
Adam Tkac 8e38eb3
+                /*
Adam Tkac 8e38eb3
+                 * Optionally canonicalize the local host name, in case
Adam Tkac 8e38eb3
+                 * gethostname() returns foo, we want foo.example.com
Adam Tkac 8e38eb3
+                 */
Adam Tkac 8e38eb3
+		if (lookupself &&
Adam Tkac 8e38eb3
+                    (e = getaddrinfo(host_name, NULL, &hints, &res)) == 0) {
Adam Tkac 8e38eb3
+                        if (res->ai_canonname) {
Adam Tkac 8e38eb3
+                                strncpy(host_name, res->ai_canonname,
Adam Tkac 8e38eb3
+                                                        sizeof(host_name)-1);
Adam Tkac 8e38eb3
+                                host_name[sizeof(host_name)-1] = 0;
Adam Tkac 8e38eb3
+                        }
Adam Tkac 8e38eb3
 		}
Adam Tkac 8e38eb3
 		if(res)
Adam Tkac 8e38eb3
 			freeaddrinfo(res);
Adam Tkac 8e38eb3
--- netkit-telnet-0.17.orig/telnetd/telnetd.8.reallynodns	2009-03-12 14:54:54.000000000 -0700
Adam Tkac 8e38eb3
+++ netkit-telnet-0.17.orig/telnetd/telnetd.8	2009-03-12 14:56:58.000000000 -0700
Adam Tkac 8e38eb3
@@ -42,7 +42,7 @@
Adam Tkac 8e38eb3
 protocol server
Adam Tkac 8e38eb3
 .Sh SYNOPSIS
Adam Tkac 8e38eb3
 .Nm /usr/sbin/in.telnetd
Adam Tkac 8e38eb3
-.Op Fl hns
Adam Tkac 8e38eb3
+.Op Fl hnNs
Adam Tkac 8e38eb3
 .Op Fl a Ar authmode
Adam Tkac 8e38eb3
 .Op Fl D Ar debugmode
Adam Tkac 8e38eb3
 .Op Fl L Ar loginprg
Adam Tkac 8e38eb3
@@ -175,6 +175,10 @@
Adam Tkac 8e38eb3
 if the client is still there, so that idle connections
Adam Tkac 8e38eb3
 from machines that have crashed or can no longer
Adam Tkac 8e38eb3
 be reached may be cleaned up.
Adam Tkac 8e38eb3
+.It Fl N
Adam Tkac 8e38eb3
+Do not use DNS to canonicalize the local hostname;
Adam Tkac 8e38eb3
+.Fn gethostname 2
Adam Tkac 8e38eb3
+returns a fully qualified name.
Adam Tkac 8e38eb3
 .It Fl s
Adam Tkac 8e38eb3
 This option is only enabled if
Adam Tkac 8e38eb3
 .Nm telnetd