void vt_force_close(VT_CONN *conn) { mysql_thread_init(); // Close the underlying socket of a MYSQL connection object. if (conn->mysql->net.vio) vio_close(conn->mysql->net.vio); }
void vio_delete(Vio * vio) { /* It must be safe to delete null pointers. */ /* This matches the semantics of C++'s delete operator. */ if (vio) { if (vio->type != VIO_CLOSED) vio_close(vio); my_free((gptr) vio,MYF(0)); } }
void vio_delete(Vio* vio) { /* It must be safe to delete null pointers. */ /* This matches the semantics of C++'s delete operator. */ if (vio) { if (vio->type != VIO_CLOSED) #ifdef HAVE_VIO /*WAX*/ vio->vioclose(vio); #else vio_close(vio); #endif my_free((gptr) vio,MYF(0)); } }
int vio_ssl_close(Vio *vio) { int r= 0; SSL *ssl= (SSL*)vio->ssl_arg; DBUG_ENTER("vio_ssl_close"); if (ssl) { /* THE SSL standard says that SSL sockets must send and receive a close_notify alert on socket shutdown to avoid truncation attacks. However, this can cause problems since we often hold a lock during shutdown and this IO can take an unbounded amount of time to complete. Since our packets are self describing with length, we aren't vunerable to these attacks. Therefore, we just shutdown by closing the socket (quiet shutdown). */ SSL_set_quiet_shutdown(ssl, 1); switch ((r= SSL_shutdown(ssl))) { case 1: /* Shutdown successful */ break; case 0: /* Shutdown not yet finished - since the socket is going to be closed there is no need to call SSL_shutdown() a second time to wait for the other side to respond */ break; default: /* Shutdown failed */ DBUG_PRINT("vio_error", ("SSL_shutdown() failed, error: %d", SSL_get_error(ssl, r))); break; } } DBUG_RETURN(vio_close(vio)); }