README 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. About
  2. =====
  3. libmicrohttpd is a GNU library (part of the GNU project) written in C
  4. that provides a compact API and implementation of an HTTP 1.1 web
  5. server. libmicrohttpd only implements the HTTP 1.1 protocol. The
  6. main application must still provide the content.
  7. Installation
  8. ============
  9. If you are using Subversion, run "autoreconf -fi" to create configure.
  10. In order to run the testcases, you need a recent version of libcurl.
  11. libcurl is not required if you just want to install the library.
  12. Configure options
  13. =================
  14. Especially for development, use "--enable-messages" to enable error
  15. reporting (and use MHD_USE_DEBUG). Error reporting is not enabled by
  16. default to reduce the size of the library (error messages take
  17. space!). If you are concerned about space, you should set "CFLAGS" to
  18. "-Os -fomit-frame-pointer" to have gcc generate tight code. The
  19. resulting binary should be about 30k (without SSL support) depending
  20. on the platform.
  21. Portability
  22. ===========
  23. The latest version of libmicrohttpd will try to avoid SIGPIPE on its
  24. sockets. This should work on OS X, Linux and recent BSD systems (at
  25. least). On other systems that may trigger a SIGPIPE on send/recv, the
  26. main application should install a signal handler to handle SIGPIPE.
  27. libmicrohttpd should work well on GNU/Linux, BSD, OS X, W32 and z/OS.
  28. Note that HTTPS is not supported on z/OS (yet).
  29. We also have reports of users using it on vxWorks.
  30. Notes on compiling on z/OS:
  31. ---------------------------
  32. After extracting the archive, run
  33. iconv -f UTF-8 -t IBM-1047 contrib/ascebc > /tmp/ascebc.sh
  34. chmod +x /tmp/ascebc.sh
  35. for n in `find * -type f`
  36. do
  37. /tmp/ascebc.sh $n
  38. done
  39. to convert all source files to EBCDIC. Note that you must run
  40. "configure" from the directory where the configure script is
  41. located. Otherwise, configure will fail to find the
  42. "contrib/xcc" script (which is a wrapper around the z/OS c89
  43. compiler).
  44. Development Status
  45. ==================
  46. This is a beta release. Below we list things that should be
  47. implemented (in order of importance) before we can claim to be
  48. reasonably complete.
  49. Missing features:
  50. =================
  51. - SSL code is still too large:
  52. - plenty of dead or unnecessary code imported from gnuTLS
  53. => hunt for more dead code!
  54. - some code is replicated (also in libgcrypt)
  55. - libgcrypt is used, and is also bloated
  56. => integrate required portions of libgcrypt into our tree
  57. instead of linking against it
  58. - Make sure SSL works on non-GNU/Linux platforms
  59. Untested features:
  60. ==================
  61. - add testcases for http/1.1 pipelining (need
  62. to figure out how to ensure curl pipelines
  63. -- and it seems libcurl has issues with pipelining,
  64. see http://curl.haxx.se/mail/lib-2007-12/0248.html)
  65. - add testcases for resource limit enforcement
  66. - add testcases for client queuing early response,
  67. suppressing 100 CONTINUE
  68. - extend testcase for chunked encoding to validate
  69. handling of footers
  70. - more testing for SSL support
  71. Missing documentation:
  72. ======================
  73. - manual:
  74. * document configuration options
  75. * document SSL/TLS support
  76. * document details on porting MHD (plibc, z/OS)
  77. - tutorial:
  78. * clean up English
  79. * make sure everything is accurate