Implemented BIOs

This commit is contained in:
2020-12-11 16:38:17 +01:00
parent 0bf8c0ccc3
commit 13fb362d12
2 changed files with 10 additions and 0 deletions

View File

@ -47,6 +47,8 @@ int client_connection_handler(sock *client) {
if (client->enc) {
client->ssl = SSL_new(client->ctx);
SSL_set_fd(client->ssl, client->socket);
SSL_set_accept_state(client->ssl);
SSL_set_bio(client->ssl, client->bio_in, client->bio_out);
ret = SSL_accept(client->ssl);
if (ret <= 0) {
@ -58,6 +60,9 @@ int client_connection_handler(sock *client) {
close:
if (client->enc) {
SSL_shutdown(client->ssl);
SSL_free(client->ssl);
BIO_free(client->bio_in);
BIO_free(client->bio_out);
}
shutdown(client->socket, SHUT_RDWR);
close(client->socket);

View File

@ -200,6 +200,11 @@ int main(int argc, const char *argv[]) {
return 1;
}
client.bio_in = BIO_new(BIO_s_mem());
client.bio_out = BIO_new(BIO_s_mem());
BIO_set_mem_eof_return(client.bio_in, -1);
BIO_set_mem_eof_return(client.bio_out, -1);
for (int i = 0; i < NUM_SOCKETS; i++) {
if (listen(SOCKETS[i], LISTEN_BACKLOG) == -1) {
fprintf(stderr, ERR_STR "Unable to listen on socket %i: %s" CLR_STR "\n", i, strerror(errno));