diff options
| author | Drew DeVault <sir@cmpwn.com> | 2020-09-26 16:10:10 -0400 |
|---|---|---|
| committer | Drew DeVault <sir@cmpwn.com> | 2020-09-26 16:10:10 -0400 |
| commit | 50d21c03f5b02254d8eb0953bd5e635813cfe1c1 (patch) | |
| tree | 9a6ca3851fdf22c68a5e14eecb0052c83409ff1a /src/server.c | |
| parent | e9641dbf1ec871d8ab367b4f4655278caeecf621 (diff) | |
| download | gmnisrv-50d21c03f5b02254d8eb0953bd5e635813cfe1c1.tar.gz gmnisrv-50d21c03f5b02254d8eb0953bd5e635813cfe1c1.tar.xz gmnisrv-50d21c03f5b02254d8eb0953bd5e635813cfe1c1.zip | |
Free up resources throughout
Diffstat (limited to 'src/server.c')
| -rw-r--r-- | src/server.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/server.c b/src/server.c index eb5f9f7..958ad64 100644 --- a/src/server.c +++ b/src/server.c @@ -210,7 +210,7 @@ disconnect_client(struct gmnisrv_server *server, struct gmnisrv_client *client) static int client_init_ssl(struct gmnisrv_server *server, struct gmnisrv_client *client) { - client->ssl = gmnisrv_tls_get_ssl(server->conf, client->sockfd); + client->ssl = tls_get_ssl(server->conf, client->sockfd); if (!client->ssl) { client_error(&client->addr, "unable to initialize SSL, disconnecting"); @@ -377,6 +377,10 @@ sni_callback(SSL *ssl, int *al, void *arg) const char *hostname = SSL_get_servername(client->ssl, SSL_get_servername_type(client->ssl)); + if (!hostname) { + return SSL_TLSEXT_ERR_NOACK; + } + struct gmnisrv_host *host = gmnisrv_config_get_host( server->conf, hostname); if (!host) { @@ -384,7 +388,7 @@ sni_callback(SSL *ssl, int *al, void *arg) } client->host = host; - gmnisrv_tls_set_host(client->ssl, client->host); + tls_set_host(client->ssl, client->host); return SSL_TLSEXT_ERR_OK; } @@ -461,6 +465,12 @@ server_run(struct gmnisrv_server *server) void server_finish(struct gmnisrv_server *server) { - // TODO - (void)server; + while (server->nclients) { + disconnect_client(server, &server->clients[0]); + } + for (size_t i = 0; i < server->nfds; ++i) { + close(server->fds[i].fd); + } + free(server->fds); + free(server->clients); } |
