diff options
author | Christian Grothoff <christian@grothoff.org> | 2018-02-09 06:13:12 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2018-02-09 06:13:12 +0100 |
commit | 48dd53c7eb6a0ec3f47c23511bcf94d3f6f52e24 (patch) | |
tree | c5ce7234dc91ba6d0a2bc2348972f15eb8180a18 /src/lib/daemon_start.c | |
parent | f65dd8e0969d6c43913da51b585437c7f8447cac (diff) | |
download | libmicrohttpd-48dd53c7eb6a0ec3f47c23511bcf94d3f6f52e24.tar.gz libmicrohttpd-48dd53c7eb6a0ec3f47c23511bcf94d3f6f52e24.zip |
more work on MHD2 API
Diffstat (limited to 'src/lib/daemon_start.c')
-rw-r--r-- | src/lib/daemon_start.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/lib/daemon_start.c b/src/lib/daemon_start.c index 51c48a28..5ed6d29d 100644 --- a/src/lib/daemon_start.c +++ b/src/lib/daemon_start.c | |||
@@ -177,11 +177,12 @@ static enum MHD_StatusCode | |||
177 | open_listen_socket (struct MHD_Daemon *daemon) | 177 | open_listen_socket (struct MHD_Daemon *daemon) |
178 | { | 178 | { |
179 | enum MHD_StatusCode sc; | 179 | enum MHD_StatusCode sc; |
180 | bool usev6; | ||
181 | socklen_t addrlen; | 180 | socklen_t addrlen; |
182 | struct sockaddr_storage ss; | 181 | struct sockaddr_storage ss; |
183 | const struct sockaddr *sa; | 182 | const struct sockaddr *sa; |
184 | 183 | int pf; | |
184 | bool use_v6; | ||
185 | |||
185 | if (MHD_INVALID_SOCKET != daemon->listen_fd) | 186 | if (MHD_INVALID_SOCKET != daemon->listen_fd) |
186 | return MHD_SC_OK; /* application opened it for us! */ | 187 | return MHD_SC_OK; /* application opened it for us! */ |
187 | 188 | ||
@@ -194,17 +195,21 @@ open_listen_socket (struct MHD_Daemon *daemon) | |||
194 | abort (); | 195 | abort (); |
195 | case MHD_AF_AUTO: | 196 | case MHD_AF_AUTO: |
196 | #if HAVE_INET6 | 197 | #if HAVE_INET6 |
198 | pf = PF_INET6; | ||
197 | use_v6 = true; | 199 | use_v6 = true; |
198 | #else | 200 | #else |
201 | pf = PF_INET; | ||
199 | use_v6 = false; | 202 | use_v6 = false; |
200 | #endif | 203 | #endif |
201 | break; | 204 | break; |
202 | case MHD_AF_INET: | 205 | case MHD_AF_INET: |
203 | use_v6 = false; | 206 | use_v6 = false; |
207 | pf = PF_INET; | ||
204 | break; | 208 | break; |
205 | case MHD_AF_INET6: | 209 | case MHD_AF_INET6: |
206 | case MHD_AF_DUAL: | 210 | case MHD_AF_DUAL: |
207 | #if HAVE_INET6 | 211 | #if HAVE_INET6 |
212 | pf = PF_INET6; | ||
208 | use_v6 = true; | 213 | use_v6 = true; |
209 | break; | 214 | break; |
210 | #else | 215 | #else |
@@ -219,21 +224,24 @@ open_listen_socket (struct MHD_Daemon *daemon) | |||
219 | } | 224 | } |
220 | else if (0 != daemon->listen_sa_len) | 225 | else if (0 != daemon->listen_sa_len) |
221 | { | 226 | { |
227 | |||
222 | /* we have a listen address, get AF from there! */ | 228 | /* we have a listen address, get AF from there! */ |
223 | switch (daemon->listen_sa.ss_family) | 229 | switch (daemon->listen_sa.ss_family) |
224 | { | 230 | { |
225 | case AF_INET: | 231 | case AF_INET: |
232 | pf = PF_INET; | ||
226 | use_v6 = false; | 233 | use_v6 = false; |
227 | break; | 234 | break; |
228 | #ifdef AF_INET6 | 235 | #ifdef AF_INET6 |
229 | case AF_INET6: | 236 | case AF_INET6: |
237 | pf = PF_INET6; | ||
230 | use_v6 = true; | 238 | use_v6 = true; |
231 | break; | 239 | break; |
232 | #endif | 240 | #endif |
233 | #ifdef AF_UNIX | 241 | #ifdef AF_UNIX |
234 | case AF_UNIX: | 242 | case AF_UNIX: |
235 | // FIXME: not implemented | 243 | pf = PF_UNIX; |
236 | // (need to change MHD_socket_create_listen_() API!) | 244 | use_v6 = false; |
237 | #endif | 245 | #endif |
238 | default: | 246 | default: |
239 | return MHD_SC_AF_NOT_SUPPORTED_BY_BUILD; | 247 | return MHD_SC_AF_NOT_SUPPORTED_BY_BUILD; |
@@ -247,12 +255,13 @@ open_listen_socket (struct MHD_Daemon *daemon) | |||
247 | 255 | ||
248 | /* try to open listen socket */ | 256 | /* try to open listen socket */ |
249 | try_open_listen_socket: | 257 | try_open_listen_socket: |
250 | daemon->listen_socket = MHD_socket_create_listen_(use_v6); | 258 | daemon->listen_socket = MHD_socket_create_listen_(pf); |
251 | if ( (MHD_INVALID_SOCKET == daemon->listen_socket) && | 259 | if ( (MHD_INVALID_SOCKET == daemon->listen_socket) && |
252 | (MHD_AF_AUTO == daemon->address_family) && | 260 | (MHD_AF_AUTO == daemon->address_family) && |
253 | (use_v6) ) | 261 | (use_v6) ) |
254 | { | 262 | { |
255 | use_v6 = false; | 263 | use_v6 = false; |
264 | pf = PF_INET; | ||
256 | goto try_open_listen_socket; | 265 | goto try_open_listen_socket; |
257 | } | 266 | } |
258 | if (MHD_INVALID_SOCKET == daemon->listen_socket) | 267 | if (MHD_INVALID_SOCKET == daemon->listen_socket) |