--- cyrus-sasl-2.1.25/lib/saslutil.c.orig 2011-10-21 13:59:59.354462366 +0200 +++ cyrus-sasl-2.1.25/lib/saslutil.c 2011-10-21 14:10:55.849675881 +0200 @@ -555,32 +555,44 @@ NULL, /* don't care abour service/port */ &hints, &result) != 0) { - /* errno on Unix, WSASetLastError on Windows are already done by the function */ - return (-1); + if (abort_if_no_fqdn) { + /* errno on Unix, WSASetLastError on Windows are already done by the function */ + return (-1); + } else { + goto LOWERCASE; + } } - if (abort_if_no_fqdn && (result == NULL || result->ai_canonname == NULL)) { + if (result == NULL || result->ai_canonname == NULL) { freeaddrinfo (result); + if (abort_if_no_fqdn) { #ifdef WIN32 - WSASetLastError (WSANO_DATA); + WSASetLastError (WSANO_DATA); #elif defined(ENODATA) - errno = ENODATA; + errno = ENODATA; #elif defined(EADDRNOTAVAIL) - errno = EADDRNOTAVAIL; + errno = EADDRNOTAVAIL; #endif - return (-1); + return (-1); + } else { + goto LOWERCASE; + } } - if (abort_if_no_fqdn && strchr (result->ai_canonname, '.') == NULL) { + if (strchr (result->ai_canonname, '.') == NULL) { freeaddrinfo (result); + if (abort_if_no_fqdn) { #ifdef WIN32 - WSASetLastError (WSANO_DATA); + WSASetLastError (WSANO_DATA); #elif defined(ENODATA) - errno = ENODATA; + errno = ENODATA; #elif defined(EADDRNOTAVAIL) - errno = EADDRNOTAVAIL; + errno = EADDRNOTAVAIL; #endif - return (-1); + return (-1); + } else { + goto LOWERCASE; + } }