From marka@isc.org  Wed Jan 14 13:22:32 2004
Return-Path: <marka@isc.org>
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id B1E5016A4CE
	for <FreeBSD-gnats-submit@freebsd.org>; Wed, 14 Jan 2004 13:22:32 -0800 (PST)
Received: from drugs.dv.isc.org (c211-30-120-24.carlnfd2.nsw.optusnet.com.au [211.30.120.24])
	by mx1.FreeBSD.org (Postfix) with ESMTP id 73A1843D3F
	for <FreeBSD-gnats-submit@freebsd.org>; Wed, 14 Jan 2004 13:22:29 -0800 (PST)
	(envelope-from marka@isc.org)
Received: from drugs.dv.isc.org (localhost [127.0.0.1])
	by drugs.dv.isc.org (8.12.9p2/8.12.9) with ESMTP id i0ELMR15070809
	for <FreeBSD-gnats-submit@freebsd.org>; Thu, 15 Jan 2004 08:22:27 +1100 (EST)
	(envelope-from marka@drugs.dv.isc.org)
Received: (from marka@localhost)
	by drugs.dv.isc.org (8.12.9p2/8.12.9/Submit) id i0ELMR55070808;
	Thu, 15 Jan 2004 08:22:27 +1100 (EST)
	(envelope-from marka)
Message-Id: <200401142122.i0ELMR55070808@drugs.dv.isc.org>
Date: Thu, 15 Jan 2004 08:22:27 +1100 (EST)
From: Mark Andrews <marka@isc.org>
Reply-To: Mark Andrews <marka@isc.org>
To: FreeBSD-gnats-submit@freebsd.org
Cc:
Subject: EAI_NODATA and EAI_NONAME are define to be the same.
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         61369
>Category:       bin
>Synopsis:       EAI_NODATA and EAI_NONAME are define to be the same.
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    ume
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Jan 14 13:30:13 PST 2004
>Closed-Date:    Thu Jan 15 07:11:17 PST 2004
>Last-Modified:  Thu Jan 15 07:11:17 PST 2004
>Originator:     Mark Andrews
>Release:        FreeBSD 5.2 i386
>Organization:
ISC
>Environment:

	FreeBSD 5.2

	$FreeBSD: src/include/netdb.h,v 1.30 2003/10/24 06:53:12 ume Exp $

>Description:

	EAI_NODATA and EAI_NONAME are defined to be the same.

	This breaks switch statements that look at result codes
	from getaddrinfo().

	This change has made every portable application that does
	this have to change from

	#ifdef EAI_NODATA
        case EAI_NODATA:
	#endif

	to

	#if defined(EAI_NODATA) && (EAI_NODATA != EAI_NONAME)
        case EAI_NODATA:
	#endif

	Having a unused result code doesn't hurt anyone.

	Removing the result code causes some pain but portable
	applications already have that pain.  EAI_NODATA doesn't
	exist on all platforms already.

	Defining EAI_NODATA to be EAI_NONAME is just plain wrong
	as it breaks existing unbroken code.

	I really am not looking forward to the bug reports that
	I will have to handle about this.  I've already got
	one.

>How-To-Repeat:
	
	#include <netdb.h>

	main() {
		int i = 0;
		/* i = getaddrinfo(....); */
		switch (i) {
		case EAI_NONAME:
			printf("EAI_NONAME\n");
			break;
	#ifdef EAI_NODATA
		case EAI_NODATA:
			printf("EAI_NODATA\n");
			break;
	#endif
		default:
			printf("default\n");
		}
	}

>Fix:

	Remove the offending #define.


>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->ume 
Responsible-Changed-By: kris 
Responsible-Changed-When: Wed Jan 14 20:31:52 PST 2004 
Responsible-Changed-Why:  
Assign to responsible committer 

http://www.freebsd.org/cgi/query-pr.cgi?pr=61369 
State-Changed-From-To: open->closed 
State-Changed-By: ume 
State-Changed-When: Thu Jan 15 07:10:28 PST 2004 
State-Changed-Why:  
I've just removed EAI_NODATA. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=61369 
>Unformatted:
