Issues not sorted in any particular order.
  #[num] refers to bug report numbers.
  UNASSIGNED means that no person has publicly stated to work on the issue.
  DELETE means the issue is subject for dismissal

To get fixed in 7.11.2 (planned release late April 2004)
======================


To get fixed in 7.12.0 (no date)
======================

25. curl_easy_strerror() curl_multi_strerror() curl_share_strerror()
    Code already in CVS. Messages need overview/improvements.
    Medium prio.

26. i18n of error messages?
    Low prio. Nobody has volunteered. Subject for removal.

33. Add a function to replace the malloc-calls within libcurl.
    Low prio. Seshubabu Pasam works on this.

35. Rearrange lib/hostip.c to reduce the amount of #ifdefs and make it easier
    to understand and edit. Daniel works on this. See
      http://curl.haxx.se/beta/hostip-cleanup1.patch
    Medium prio.

36. Add support for a threaded getaddrinfo() on Windows and IPv6 enabled
    libcurl.

37. Configure option "--with-libidn" to support IDNA (Internationalising
    Domain Names in Applications). Translate to/from ACE encoded domain
    names as needed.

38. Make the ldap protocol work with Windows' built-in LDAP-client.
    I.e. dynamically link to WLDAP32.DLL and add ldap URL parsing
    (WLDAP32.DLL doesn't have an UTF-8 ldap_url_parse).
