diff options
Diffstat (limited to 'README')
-rw-r--r-- | README | 127 |
1 files changed, 91 insertions, 36 deletions
@@ -7,6 +7,11 @@ is also supported). GNU libmicrohttpd only implements the HTTP 1.1 | |||
7 | protocol. The main application must still provide the application | 7 | protocol. The main application must still provide the application |
8 | logic to generate the content. | 8 | logic to generate the content. |
9 | 9 | ||
10 | Additionally, a second, still very experimental library is provided | ||
11 | for SPDY/HTTP 2.0 support. libmicrospdy provides a compact API and | ||
12 | implementation of SPDY server. libmicrospdy currently only implements | ||
13 | version 3 of SPDY and accepts only TLS connections. | ||
14 | |||
10 | 15 | ||
11 | Installation | 16 | Installation |
12 | ============ | 17 | ============ |
@@ -20,6 +25,21 @@ Especially for development, do use the MHD_USE_DEBUG option to get | |||
20 | error messages. | 25 | error messages. |
21 | 26 | ||
22 | 27 | ||
28 | Requirements for libmicrospdy | ||
29 | ============================= | ||
30 | |||
31 | The following packages are needed to build libmicrospdy: | ||
32 | |||
33 | * zlib | ||
34 | * OpenSSL >= 1.0.1 | ||
35 | |||
36 | To run the test cases, involving requests, version of Spdylay, supporting | ||
37 | SPDY v3, is required. Spdylay is still under development and can be | ||
38 | found here: | ||
39 | |||
40 | http://spdylay.sourceforge.net/ | ||
41 | |||
42 | |||
23 | Configure options | 43 | Configure options |
24 | ================= | 44 | ================= |
25 | 45 | ||
@@ -53,58 +73,93 @@ must call "MHD_init" before using any MHD functions and "MHD_fini" | |||
53 | after you are done using MHD. | 73 | after you are done using MHD. |
54 | 74 | ||
55 | 75 | ||
56 | Notes on compiling on z/OS: | ||
57 | --------------------------- | ||
58 | |||
59 | After extracting the archive, run | ||
60 | |||
61 | iconv -f UTF-8 -t IBM-1047 contrib/ascebc > /tmp/ascebc.sh | ||
62 | chmod +x /tmp/ascebc.sh | ||
63 | for n in `find * -type f` | ||
64 | do | ||
65 | /tmp/ascebc.sh $n | ||
66 | done | ||
67 | |||
68 | to convert all source files to EBCDIC. Note that you must run | ||
69 | "configure" from the directory where the configure script is | ||
70 | located. Otherwise, configure will fail to find the | ||
71 | "contrib/xcc" script (which is a wrapper around the z/OS c89 | ||
72 | compiler). | ||
73 | |||
74 | |||
75 | Development Status | 76 | Development Status |
76 | ================== | 77 | ================== |
77 | 78 | ||
78 | This is a beta release. Below we list things that should be | 79 | This is a beta release for libmicrohttpd. Before declaring the |
79 | implemented (in order of importance) before we can claim to be | 80 | library stable, we should implement support for HTTP "Upgrade" |
80 | reasonably complete. | 81 | requests and have testcases for the following features: |
81 | |||
82 | 82 | ||
83 | Untested features: | 83 | - HTTP/1.1 pipelining (need to figure out how to ensure curl pipelines |
84 | ================== | ||
85 | - add testcases for http/1.1 pipelining (need | ||
86 | to figure out how to ensure curl pipelines | ||
87 | -- and it seems libcurl has issues with pipelining, | 84 | -- and it seems libcurl has issues with pipelining, |
88 | see http://curl.haxx.se/mail/lib-2007-12/0248.html) | 85 | see http://curl.haxx.se/mail/lib-2007-12/0248.html) |
89 | - add testcases for resource limit enforcement | 86 | - resource limit enforcement |
90 | - add testcases for client queuing early response, | 87 | - client queuing early response, suppressing 100 CONTINUE |
91 | suppressing 100 CONTINUE | 88 | - chunked encoding to validate handling of footers |
92 | - extend testcase for chunked encoding to validate | ||
93 | handling of footers | ||
94 | - more testing for SSL support | 89 | - more testing for SSL support |
95 | - MHD basic and digest authentication | 90 | - MHD basic and digest authentication |
96 | 91 | ||
97 | 92 | In particular, the following functions are not covered by 'make check': | |
98 | Functions not covered by "make check": | ||
99 | ====================================== | ||
100 | - mhd_panic_std (daemon.c); special case (abort) | 93 | - mhd_panic_std (daemon.c); special case (abort) |
101 | - parse_options (daemon.c) | 94 | - parse_options (daemon.c) |
102 | - MHD_set_panic_func (daemon.c) | 95 | - MHD_set_panic_func (daemon.c) |
103 | - MHD_get_version (daemon.c) | 96 | - MHD_get_version (daemon.c) |
104 | 97 | ||
105 | 98 | ||
99 | This is an early alpha release for libmicrospdy. The following things | ||
100 | should be implemented (in order of importance) before we can claim to | ||
101 | be reasonably complete: | ||
102 | - Change session timeout to use not seconds but something more precise | ||
103 | - SPDY RST_STREAM sending on each possible error (DONE?) | ||
104 | - SPDY_close_session | ||
105 | - Find the best way for closing still opened stream (new call or existing) | ||
106 | - SPDY_is_stream_opened | ||
107 | - SPDY PING (used often by browsers) | ||
108 | - SPDY WINDOW_UPDATE - used often by browsers | ||
109 | - SPDY Settings | ||
110 | - SPDY PUSH | ||
111 | - SPDY HEADERS | ||
112 | - HTTP POST over SPDY and receiving DATA frames | ||
113 | - HTTP PUT over SPDY | ||
114 | - SPDY Credentials | ||
115 | |||
116 | Additional ideas for features include: | ||
117 | - Individual callbacks for each session | ||
118 | - Individual timeout for each session | ||
119 | - Setting number of frames that can be written to the output at once. | ||
120 | A big number means faster sending of a big resource, but the other | ||
121 | sessions will wait longer. | ||
122 | |||
123 | Unimplemented API functions of libmicrospdy: | ||
124 | - SPDY_settings_create (); | ||
125 | - SPDY_settings_add (...); | ||
126 | - SPDY_settings_lookup (...); | ||
127 | - SPDY_settings_iterate (...); | ||
128 | - SPDY_settings_destroy (...); | ||
129 | - SPDY_close_session(...); | ||
130 | - SPDY_send_ping(...); | ||
131 | - SPDY_send_settings (...); | ||
132 | |||
133 | In particular, we should write tests for: | ||
134 | - Enqueueing responses while considering request priorities. | ||
135 | |||
136 | |||
137 | |||
138 | |||
139 | |||
106 | Missing documentation: | 140 | Missing documentation: |
107 | ====================== | 141 | ====================== |
108 | 142 | ||
109 | - manual: | 143 | - libmicrohttpd manual: |
110 | * document details on porting MHD (plibc, z/OS) | 144 | * document details on porting MHD (plibc, z/OS) |
145 | - libmicrospdy manual: | ||
146 | * missing entirely | ||
147 | |||
148 | |||
149 | Notes on compiling on z/OS: | ||
150 | =========================== | ||
151 | |||
152 | After extracting the archive, run | ||
153 | |||
154 | iconv -f UTF-8 -t IBM-1047 contrib/ascebc > /tmp/ascebc.sh | ||
155 | chmod +x /tmp/ascebc.sh | ||
156 | for n in `find * -type f` | ||
157 | do | ||
158 | /tmp/ascebc.sh $n | ||
159 | done | ||
160 | |||
161 | to convert all source files to EBCDIC. Note that you must run | ||
162 | "configure" from the directory where the configure script is | ||
163 | located. Otherwise, configure will fail to find the | ||
164 | "contrib/xcc" script (which is a wrapper around the z/OS c89 | ||
165 | compiler). | ||