Commit 24420c21 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

Simon Josefsson added a idn_free() function in libidn 0.4.5 as a reaction to

 Gisle's previous mail. We now use this function, and thus we require libidn
 0.4.5 or later. No earler version will do.
parent 59f904d8
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -7,6 +7,10 @@
                                  Changelog

Daniel (24 May 2004)
- Simon Josefsson added a idn_free() function in libidn 0.4.5 as a reaction to
  Gisle's previous mail. We now use this function, and thus we require libidn
  0.4.5 or later. No earler version will do.

- Robert D. Young reported that CURLOPT_COOKIEFILE and CURLOPT_COOKIE could
  not be used both in one request. Fixed it and added test case 172 to verify.

+1 −0
Original line number Diff line number Diff line
@@ -304,6 +304,7 @@ typedef struct in_addr Curl_ipconnect;
/* This could benefit from additional checks that some of the used/important
   header files are present as well before we define the USE_* define. */
#define USE_LIBIDN
#define LIBIDN_REQUIRED_VERSION "0.4.5"
#endif

#endif /* __CONFIG_H */
+10 −7
Original line number Diff line number Diff line
@@ -87,6 +87,8 @@
#ifdef USE_LIBIDN
#include <idna.h>
#include <stringprep.h>
void idn_free (void *ptr); /* prototype from idn-free.h, not provided by
                              libidn 0.4.5's make install! */
#endif

#ifdef HAVE_OPENSSL_ENGINE_H
@@ -1390,13 +1392,13 @@ CURLcode Curl_disconnect(struct connectdata *conn)
  Curl_safefree(conn->host.rawalloc); /* host name buffer */
  Curl_safefree(conn->proxy.rawalloc); /* proxy name buffer */
  if(conn->host.encalloc)
    (free)(conn->host.encalloc); /* encoded host name buffer, must be freed
                                    with free() since this was allocated by
                                    libidn */
    idn_free(conn->host.encalloc); /* encoded host name buffer, must be freed
                                      with idn_free() since this was allocated
                                      by libidn */
  if(conn->proxy.encalloc)
    (free)(conn->proxy.encalloc); /* encoded proxy name buffer, must be freed
                                     with free() since this was allocated by
                                     libidn */
    idn_free(conn->proxy.encalloc); /* encoded proxy name buffer, must be
                                       freed with idn_free() since this was
                                       allocated by libidn */
  Curl_SSL_Close(conn);

  /* close possibly still open sockets */
@@ -1997,7 +1999,8 @@ static void fix_hostname(struct connectdata *conn, struct hostname *host)
  /*************************************************************
   * Check name for non-ASCII and convert hostname to ACE form.
   *************************************************************/
  if (!is_ASCII_name(host->name)) {
  if (!is_ASCII_name(host->name) &&
      stringprep_check_version(LIBIDN_REQUIRED_VERSION)) {
    char *ace_hostname = NULL;
    struct SessionHandle *data = conn->data;
    int rc = idna_to_ascii_lz(host->name, &ace_hostname, 0);
+11 −5
Original line number Diff line number Diff line
@@ -132,8 +132,10 @@ char *curl_version(void)
  ptr += strlen(ptr);
#endif
#ifdef USE_LIBIDN
  if(stringprep_check_version(LIBIDN_REQUIRED_VERSION)) {
    sprintf(ptr, " libidn/%s", stringprep_check_version(NULL));
    ptr += strlen(ptr);
  }
#endif

  return version;
@@ -208,9 +210,6 @@ static curl_version_info_data version_info = {
#endif
#if defined(ENABLE_64BIT) && (SIZEOF_CURL_OFF_T > 4)
  | CURL_VERSION_LARGEFILE
#endif
#ifdef USE_LIBIDN
  | CURL_VERSION_IDN
#endif
  ,
  NULL, /* ssl_version */
@@ -244,6 +243,13 @@ curl_version_info_data *curl_version_info(CURLversion stamp)
    version_info.ares = ares_version(&aresnum);
    version_info.ares_num = aresnum;
  }
#endif
#ifdef USE_LIBIDN
  /* This returns a version string if we use the given version or later,
     otherwise it returns NULL */
  version_info.libidn = stringprep_check_version(LIBIDN_REQUIRED_VERSION);
  if(version_info.libidn)
    version_info.features |= CURL_VERSION_IDN;
#endif
  (void)stamp; /* avoid compiler warnings, we don't use this */