31 |
31 |
32 #include "sessionhandler.h" |
32 #include "sessionhandler.h" |
33 #include "threadpools.h" |
33 #include "threadpools.h" |
34 #include "config.h" |
34 #include "config.h" |
35 #include "../util/systems.h" |
35 #include "../util/systems.h" |
|
36 |
|
37 #include <arpa/inet.h> |
|
38 #include <netinet/in.h> |
|
39 #include <sys/socket.h> |
|
40 #include <sys/types.h> |
|
41 #include <netdb.h> |
|
42 #include <unistd.h> |
36 |
43 |
37 #include <openssl/bio.h> |
44 #include <openssl/bio.h> |
38 #include <openssl/ssl.h> |
45 #include <openssl/ssl.h> |
39 #include <openssl/err.h> |
46 #include <openssl/err.h> |
40 |
47 |
110 SSL_CTX *sslctx; |
117 SSL_CTX *sslctx; |
111 |
118 |
112 // TODO: ssl/tls cipher, ... config |
119 // TODO: ssl/tls cipher, ... config |
113 }; |
120 }; |
114 |
121 |
|
122 union ws_socketaddr { |
|
123 struct sockaddr_in addr4; |
|
124 struct sockaddr_in6 addr6; |
|
125 }; |
|
126 |
115 struct _ws_socket { |
127 struct _ws_socket { |
|
128 union ws_socketaddr addr; |
|
129 struct sockaddr *sockaddr; |
|
130 size_t sockaddr_size; |
116 int socket; |
131 int socket; |
117 WSBool listening; |
132 WSBool listening; |
118 HttpSSL *ssl; |
133 HttpSSL *ssl; |
119 uint32_t ref; // reference counter |
134 uint32_t ref; // reference counter |
120 }; |
135 }; |
141 * set the succeeding listener |
156 * set the succeeding listener |
142 */ |
157 */ |
143 void http_listener_set_next(HttpListener *listener, HttpListener *next); |
158 void http_listener_set_next(HttpListener *listener, HttpListener *next); |
144 |
159 |
145 /* |
160 /* |
|
161 * Connect to the listener's server socket |
|
162 * Returns a file descriptor or -1 |
|
163 */ |
|
164 int http_listener_connect(HttpListener *listener, WSBool ipv6); |
|
165 |
|
166 /* |
146 * shutdown all acceptor threads |
167 * shutdown all acceptor threads |
|
168 * this should be called, before any new acceptors for the same socket |
|
169 * are started |
147 */ |
170 */ |
148 void http_listener_shutdown_acceptors(HttpListener *listener); |
171 void http_listener_shutdown_acceptors(HttpListener *listener); |
149 |
172 |
150 Acceptor* acceptor_new(HttpListener *listener); |
173 Acceptor* acceptor_new(HttpListener *listener); |
151 |
174 |