Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
dtls: Free OpenSSL contexts when the library instance is freed
Per valgrind these leaked about 1kB.

Signed-off-by: Kevin Cernekee <cernekee@gmail.com>
  • Loading branch information
cernekee committed Mar 19, 2014
1 parent b37e007 commit c0246ff
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 1 deletion.
16 changes: 16 additions & 0 deletions dtls.c
Expand Up @@ -305,6 +305,13 @@ int dtls_try_handshake(struct openconnect_info *vpninfo)
return -EINVAL;
}

void dtls_shutdown(struct openconnect_info *vpninfo)
{
dtls_close(vpninfo);
SSL_CTX_free(vpninfo->dtls_ctx);
SSL_SESSION_free(vpninfo->dtls_session);
}

#elif defined(DTLS_GNUTLS)
#include <gnutls/dtls.h>

Expand Down Expand Up @@ -444,6 +451,11 @@ int dtls_try_handshake(struct openconnect_info *vpninfo)
time(&vpninfo->new_dtls_started);
return -EINVAL;
}

void dtls_shutdown(struct openconnect_info *vpninfo)
{
dtls_close(vpninfo);
}
#endif

int connect_dtls_socket(struct openconnect_info *vpninfo)
Expand Down Expand Up @@ -889,4 +901,8 @@ int dtls_reconnect(struct openconnect_info *vpninfo)
void dtls_close(struct openconnect_info *vpninfo)
{
}

void dtls_shutdown(struct openconnect_info *vpninfo)
{
}
#endif
2 changes: 1 addition & 1 deletion library.c
Expand Up @@ -137,7 +137,7 @@ static void free_optlist(struct oc_vpn_option *opt)
void openconnect_vpninfo_free(struct openconnect_info *vpninfo)
{
openconnect_close_https(vpninfo, 1);
dtls_close(vpninfo);
dtls_shutdown(vpninfo);
if (vpninfo->cmd_fd_write != -1) {
close(vpninfo->cmd_fd);
close(vpninfo->cmd_fd_write);
Expand Down
1 change: 1 addition & 0 deletions openconnect-internal.h
Expand Up @@ -464,6 +464,7 @@ int dtls_mainloop(struct openconnect_info *vpninfo, int *timeout);
int dtls_try_handshake(struct openconnect_info *vpninfo);
int connect_dtls_socket(struct openconnect_info *vpninfo);
void dtls_close(struct openconnect_info *vpninfo);
void dtls_shutdown(struct openconnect_info *vpninfo);
int dtls_reconnect(struct openconnect_info *vpninfo);

/* cstp.c */
Expand Down

0 comments on commit c0246ff

Please sign in to comment.