From owner-freebsd-bugs Mon Dec 18 16:50: 8 2000 From owner-freebsd-bugs@FreeBSD.ORG Mon Dec 18 16:50:02 2000 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from freefall.freebsd.org (freefall.FreeBSD.org [216.136.204.21]) by hub.freebsd.org (Postfix) with ESMTP id 4344737B402 for ; Mon, 18 Dec 2000 16:50:02 -0800 (PST) Received: (from gnats@localhost) by freefall.freebsd.org (8.11.1/8.11.1) id eBJ0o2288314; Mon, 18 Dec 2000 16:50:02 -0800 (PST) (envelope-from gnats) Resent-Date: Mon, 18 Dec 2000 16:50:02 -0800 (PST) Resent-Message-Id: <200012190050.eBJ0o2288314@freefall.freebsd.org> Resent-From: gnats-admin@FreeBSD.org (GNATS Management) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: gnats-admin@FreeBSD.org, pdh@minotaur.int.bit.net.au Received: from minotaur.int.bit.net.au (fw-hme0.bne.au.asiaonline.net [210.215.40.126]) by hub.freebsd.org (Postfix) with ESMTP id A838637B400 for ; Mon, 18 Dec 2000 16:41:50 -0800 (PST) Received: (from pdh@localhost) by minotaur.int.bit.net.au (8.11.0/8.11.0) id eBJ0fjl00856; Tue, 19 Dec 2000 10:41:45 +1000 (EST) (envelope-from pdh) Message-Id: <200012190041.eBJ0fjl00856@minotaur.int.bit.net.au> Date: Tue, 19 Dec 2000 10:41:45 +1000 (EST) From: Phil Homewood Reply-To: pdh@minotaur.int.bit.net.au To: FreeBSD-gnats-submit@freebsd.org X-Send-Pr-Version: 3.2 Subject: bin/23635: [PATCH] whois enhancement - smarter whois-servers.net lookups Resent-Sender: gnats@FreeBSD.org Sender: owner-freebsd-bugs@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org >Number: 23635 >Category: bin >Synopsis: [PATCH] whois enhancement - smarter whois-servers.net lookups >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Mon Dec 18 16:50:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: Phil Homewood >Release: FreeBSD 4.1-STABLE i386 >Organization: Asia Online >Environment: FreeBSD 4.2-STABLE #0: Tue Dec 12 11:14:33 EST 2000 >Description: whois doesn't look up registries for non-TLDs. >How-To-Repeat: whois bit.net.au whois -h net.au.whois-servers.net bit.net.au >Fix: The following patch tries ever-shortening suffixes of the given domain until it finds a whois-server to ask. It also fixes a minor annoyance in that "whois example.com." fails. --- usr.bin/whois/whois.c.orig Sat Jul 15 17:29:31 2000 +++ usr.bin/whois/whois.c Tue Dec 19 10:26:21 2000 @@ -84,6 +84,7 @@ { int ch, i, j, error; int use_qnichost, flags; + int found = 0; char *host; char *qnichost; struct addrinfo hints, *res; @@ -160,29 +161,42 @@ free(qnichost); qnichost = NULL; } - for (i = j = 0; (*argv)[i]; i++) { - if ((*argv)[i] == '.') { - j = i; - } + for (i = 0; (*argv)[i]; i++); + if (i <= 1) { + errx(EX_NOHOST, + "Can't search for the null string."); } - if (j != 0) { - qnichost = (char *) calloc(i - j + 1 + - strlen(QNICHOST_TAIL), sizeof(char)); - if (!qnichost) { - err(1, "calloc"); + if (*argv[i] == '.') i--; + for (j = 0; (*argv)[j]; j++) { + if (((*argv)[j] == '.') && !found) { + qnichost = (char *) calloc(i - j + 1 + + strlen(QNICHOST_TAIL), + sizeof(char)); + if (!qnichost) { + err(1, "calloc"); + } + strcpy(qnichost, *argv + j + 1); + strcat(qnichost, QNICHOST_TAIL); + + memset(&hints, 0, sizeof(hints)); + hints.ai_flags = 0; + hints.ai_family = AF_UNSPEC; + hints.ai_socktype = SOCK_STREAM; + error = getaddrinfo(qnichost, "whois", + &hints, &res); + if (error == 0) { + found = 1; + } else { + free(qnichost); + qnichost = NULL; + } } - strcpy(qnichost, *argv + j + 1); - strcat(qnichost, QNICHOST_TAIL); - memset(&hints, 0, sizeof(hints)); - hints.ai_flags = 0; - hints.ai_family = AF_UNSPEC; - hints.ai_socktype = SOCK_STREAM; - error = getaddrinfo(qnichost, "whois", - &hints, &res); - if (error != 0) - errx(EX_NOHOST, "%s: %s", qnichost, - gai_strerror(error)); + } + if (!found) { + errx(EX_NOHOST, + "Cannot locate whois server for %s", + *argv); } } if (!qnichost) { >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message