void dtls_close(struct openconnect_info *vpninfo, int kill_handshake_too) { if (vpninfo->dtls_ssl) { DTLS_FREE(vpninfo->dtls_ssl); close(vpninfo->dtls_fd); FD_CLR(vpninfo->dtls_fd, &vpninfo->select_rfds); FD_CLR(vpninfo->dtls_fd, &vpninfo->select_wfds); FD_CLR(vpninfo->dtls_fd, &vpninfo->select_efds); vpninfo->dtls_ssl = NULL; vpninfo->dtls_fd = -1; } if (kill_handshake_too && vpninfo->new_dtls_ssl) { DTLS_FREE(vpninfo->new_dtls_ssl); close(vpninfo->new_dtls_fd); FD_CLR(vpninfo->new_dtls_fd, &vpninfo->select_rfds); FD_CLR(vpninfo->new_dtls_fd, &vpninfo->select_efds); vpninfo->new_dtls_ssl = NULL; vpninfo->new_dtls_fd = -1; } }
void dtls_close(struct openconnect_info *vpninfo) { if (vpninfo->dtls_ssl) { DTLS_FREE(vpninfo->dtls_ssl); closesocket(vpninfo->dtls_fd); unmonitor_read_fd(vpninfo, dtls); unmonitor_write_fd(vpninfo, dtls); unmonitor_except_fd(vpninfo, dtls); vpninfo->dtls_ssl = NULL; vpninfo->dtls_fd = -1; } }