diff options
author | Ludovic Courtès <ludo@gnu.org> | 2011-01-05 22:17:26 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2011-01-05 22:17:26 +0100 |
commit | 66d86131086d80356bfde1a9ea920f9bfb2b304c (patch) | |
tree | c39134acc6db15b4ff980774a9ebd3e2a774699f | |
parent | 8891bd1b166b7210c241a0c1a730fc3af7f45b8a (diff) | |
download | guile-66d86131086d80356bfde1a9ea920f9bfb2b304c.tar.gz |
Change `getaddrinfo' test to handle the GNU-specific `EAI_NODATA'.
* doc/ref/posix.texi (Network Databases): Mention `EAI_NODATA'.
* libguile/net_db.c (scm_getaddrinfo): Likewise for the docstring.
* test-suite/tests/net-db.test ("getaddrinfo")["no name"]: Handle
`EAI_NODATA'.
-rw-r--r-- | doc/ref/posix.texi | 8 | ||||
-rw-r--r-- | libguile/net_db.c | 7 | ||||
-rw-r--r-- | test-suite/tests/net-db.test | 13 |
3 files changed, 23 insertions, 5 deletions
diff --git a/doc/ref/posix.texi b/doc/ref/posix.texi index 468eaea8f..156ed5c28 100644 --- a/doc/ref/posix.texi +++ b/doc/ref/posix.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Guile Reference Manual. -@c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010 +@c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 @c Free Software Foundation, Inc. @c See the file guile.texi for copying conditions. @@ -2497,6 +2497,12 @@ resolve the name. Either @var{name} does not resolve for the supplied parameters, or neither @var{name} nor @var{service} were supplied. +@item EAI_NODATA +This non-POSIX error code can be returned on GNU systems when a +request was actually made but returned no data, meaning +that no address is associated with @var{name}. Error handling +code should be prepared to handle it when it is defined. + @item EAI_SERVICE @var{service} was not recognized for the specified socket type. diff --git a/libguile/net_db.c b/libguile/net_db.c index bcba18ebd..14722d516 100644 --- a/libguile/net_db.c +++ b/libguile/net_db.c @@ -1,5 +1,5 @@ /* "net_db.c" network database support - * Copyright (C) 1995,1996,1997,1998,1999,2000,2001, 2006, 2009, 2010 Free Software Foundation, Inc. + * Copyright (C) 1995,1996,1997,1998,1999,2000,2001, 2006, 2009, 2010, 2011 Free Software Foundation, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License @@ -590,6 +590,11 @@ SCM_DEFINE (scm_getaddrinfo, "getaddrinfo", 1, 5, 0, "@item EAI_NONAME\n" "Either @var{name} does not resolve for the supplied parameters, " "or neither @var{name} nor @var{service} were supplied.\n\n" + "@item EAI_NODATA\n" + "This non-POSIX error code can be returned on GNU systems when a\n" + "request was actually made but returned no data, meaning\n" + "that no address is associated with @var{name}. Error handling\n" + "code should be prepared to handle it when it is defined.\n\n" "@item EAI_SERVICE\n" "@var{service} was not recognized for the specified socket type.\n\n" "@item EAI_SOCKTYPE\n" diff --git a/test-suite/tests/net-db.test b/test-suite/tests/net-db.test index 083cf5f9a..89ebb1b1c 100644 --- a/test-suite/tests/net-db.test +++ b/test-suite/tests/net-db.test @@ -1,7 +1,7 @@ ;;;; net-db.test --- Test suite for `net-db' -*- mode: scheme; coding: utf-8; -*- ;;;; Ludovic Courtès <ludo@gnu.org> ;;;; -;;;; Copyright (C) 2010 Free Software Foundation, Inc. +;;;; Copyright (C) 2010, 2011 Free Software Foundation, Inc. ;;;; ;;;; This library is free software; you can redistribute it and/or ;;;; modify it under the terms of the GNU Lesser General Public @@ -73,9 +73,16 @@ (throw 'unresolved)) (lambda (key errcode) ;; In some cases (e.g., in a chroot without - ;; /etc/{hosts,resolv.conf}), this can result in `EAI_EAGAIN'. + ;; /etc/{hosts,resolv.conf}), this can result in + ;; `EAI_EAGAIN' (glibc 2.11), or `EAI_NODATA' (glibc 2.12). (and (or (= errcode EAI_NONAME) - (= errcode EAI_AGAIN)) + (and (defined? 'EAI_NODATA) ; GNU extension + (= errcode EAI_NODATA)) + (= errcode EAI_AGAIN) + (begin + (format #t "unexpected error code: ~a ~s~%" + errcode (gai-strerror errcode)) + #f)) (string? (gai-strerror errcode)))))) (pass-if "wrong service name" |