X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=cups%2Fhttp-addr.c;h=677c7a682483c28db1d5d25670ad27383d6b0e20;hb=f518bf7ea19de7d9ddc79ffe2d4d0556145adbec;hp=00eabffc9c59395fe84b58f49d442027bc636c2e;hpb=e1f19878c6c7abacbce81ae0986bc3dbf35ae5b3;p=thirdparty%2Fcups.git diff --git a/cups/http-addr.c b/cups/http-addr.c index 00eabffc9..677c7a682 100644 --- a/cups/http-addr.c +++ b/cups/http-addr.c @@ -1,18 +1,10 @@ /* - * "$Id$" - * * HTTP address routines for CUPS. * * Copyright 2007-2014 by Apple Inc. * Copyright 1997-2006 by Easy Software Products, all rights reserved. * - * These coded instructions, statements, and computer programs are the - * property of Apple Inc. and are protected by Federal copyright - * law. Distribution and use rights are outlined in the file "LICENSE.txt" - * which should have been included with this file. If this file is - * file is missing or damaged, see the license at "http://www.cups.org/". - * - * This file is subject to the Apple OS-Developed Software exception. + * Licensed under Apache License v2.0. See the file "LICENSE" for more information. */ /* @@ -20,6 +12,7 @@ */ #include "cups-private.h" +#include "debug-internal.h" #include #ifdef HAVE_RESOLV_H # include @@ -33,7 +26,7 @@ /* * 'httpAddrAny()' - Check for the "any" address. * - * @since CUPS 1.2/OS X 10.5@ + * @since CUPS 1.2/macOS 10.5@ */ int /* O - 1 if "any", 0 otherwise */ @@ -60,9 +53,9 @@ httpAddrAny(const http_addr_t *addr) /* I - Address to check */ * 'httpAddrClose()' - Close a socket created by @link httpAddrConnect@ or * @link httpAddrListen@. * - * Pass @code NULL@ for sockets created with @link httpAddrConnect@ and the - * listen address for sockets created with @link httpAddrListen@. This will - * ensure that domain sockets are removed when closed. + * Pass @code NULL@ for sockets created with @link httpAddrConnect2@ and the + * listen address for sockets created with @link httpAddrListen@. This function + * ensures that domain sockets are removed when closed. * * @since CUPS 2.0/OS 10.10@ */ @@ -71,11 +64,11 @@ int /* O - 0 on success, -1 on failure */ httpAddrClose(http_addr_t *addr, /* I - Listen address or @code NULL@ */ int fd) /* I - Socket file descriptor */ { -#ifdef WIN32 +#ifdef _WIN32 if (closesocket(fd)) #else if (close(fd)) -#endif /* WIN32 */ +#endif /* _WIN32 */ return (-1); #ifdef AF_LOCAL @@ -90,7 +83,7 @@ httpAddrClose(http_addr_t *addr, /* I - Listen address or @code NULL@ */ /* * 'httpAddrEqual()' - Compare two addresses. * - * @since CUPS 1.2/OS X 10.5@ + * @since CUPS 1.2/macOS 10.5@ */ int /* O - 1 if equal, 0 if not */ @@ -123,7 +116,7 @@ httpAddrEqual(const http_addr_t *addr1, /* I - First address */ /* * 'httpAddrLength()' - Return the length of the address in bytes. * - * @since CUPS 1.2/OS X 10.5@ + * @since CUPS 1.2/macOS 10.5@ */ int /* O - Length in bytes */ @@ -154,7 +147,7 @@ httpAddrLength(const http_addr_t *addr) /* I - Address */ * 'httpAddrListen()' - Create a listening socket bound to the specified * address and port. * - * @since CUPS 1.7/OS X 10.9@ + * @since CUPS 1.7/macOS 10.9@ */ int /* O - Socket or -1 on error */ @@ -260,9 +253,9 @@ httpAddrListen(http_addr_t *addr, /* I - Address to bind to */ * Close on exec... */ -#ifndef WIN32 +#ifndef _WIN32 fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC); -#endif /* !WIN32 */ +#endif /* !_WIN32 */ #ifdef SO_NOSIGPIPE /* @@ -280,7 +273,7 @@ httpAddrListen(http_addr_t *addr, /* I - Address to bind to */ /* * 'httpAddrLocalhost()' - Check for the local loopback address. * - * @since CUPS 1.2/OS X 10.5@ + * @since CUPS 1.2/macOS 10.5@ */ int /* O - 1 if local host, 0 otherwise */ @@ -312,7 +305,7 @@ httpAddrLocalhost( /* * 'httpAddrLookup()' - Lookup the hostname associated with the address. * - * @since CUPS 1.2/OS X 10.5@ + * @since CUPS 1.2/macOS 10.5@ */ char * /* O - Host name */ @@ -325,8 +318,7 @@ httpAddrLookup( /* Global data */ - DEBUG_printf(("httpAddrLookup(addr=%p, name=%p, namelen=%d)", addr, name, - namelen)); + DEBUG_printf(("httpAddrLookup(addr=%p, name=%p, namelen=%d)", (void *)addr, (void *)name, namelen)); /* * Range check input... @@ -452,7 +444,7 @@ httpAddrFamily(http_addr_t *addr) /* I - Address */ /* * 'httpAddrPort()' - Get the port number associated with an address. * - * @since CUPS 1.7/OS X 10.9@ + * @since CUPS 1.7/macOS 10.9@ */ int /* O - Port number */ @@ -495,7 +487,7 @@ _httpAddrSetPort(http_addr_t *addr, /* I - Address */ /* * 'httpAddrString()' - Convert an address to a numeric string. * - * @since CUPS 1.2/OS X 10.5@ + * @since CUPS 1.2/macOS 10.5@ */ char * /* O - Numeric address string */ @@ -503,7 +495,7 @@ httpAddrString(const http_addr_t *addr, /* I - Address to convert */ char *s, /* I - String buffer */ int slen) /* I - Length of string */ { - DEBUG_printf(("httpAddrString(addr=%p, s=%p, slen=%d)", addr, s, slen)); + DEBUG_printf(("httpAddrString(addr=%p, s=%p, slen=%d)", (void *)addr, (void *)s, slen)); /* * Range check input... @@ -651,6 +643,10 @@ httpAddrString(const http_addr_t *addr, /* I - Address to convert */ /* * 'httpGetAddress()' - Get the address of the connected peer of a connection. * + * For connections created with @link httpConnect2@, the address is for the + * server. For connections created with @link httpAccept@, the address is for + * the client. + * * Returns @code NULL@ if the socket is currently unconnected. * * @since CUPS 2.0/OS 10.10@ @@ -670,7 +666,7 @@ httpGetAddress(http_t *http) /* I - HTTP connection */ * 'httpGetHostByName()' - Lookup a hostname or IPv4 address, and return * address records for the specified name. * - * @deprecated@ + * @deprecated@ @exclude all@ */ struct hostent * /* O - Host entry */ @@ -784,7 +780,7 @@ httpGetHostByName(const char *name) /* I - Hostname or IP address */ * Otherwise, return the FQDN for the local system using both gethostname() * and gethostbyname() to get the local hostname with domain. * - * @since CUPS 1.2/OS X 10.5@ + * @since CUPS 1.2/macOS 10.5@ */ const char * /* O - FQDN for connection or system */ @@ -865,6 +861,25 @@ httpGetHostname(http_t *http, /* I - HTTP connection or NULL */ } #endif /* HAVE_SCDYNAMICSTORECOPYCOMPUTERNAME */ } + + /* + * Make sure .local hostnames end with a period... + */ + + if (strlen(s) > 6 && !strcmp(s + strlen(s) - 6, ".local")) + strlcat(s, ".", (size_t)slen); + } + + /* + * Convert the hostname to lowercase as needed... + */ + + if (s[0] != '/') + { + char *ptr; /* Pointer into string */ + + for (ptr = s; *ptr; ptr ++) + *ptr = (char)_cups_tolower((int)*ptr); } /* @@ -914,8 +929,3 @@ httpResolveHostname(http_t *http, /* I - HTTP connection */ else return (http->hostname); } - - -/* - * End of "$Id$". - */