MCPcopy Create free account
hub / github.com/F-Stack/f-stack / tlsHandleEvent

Function tlsHandleEvent

app/redis-6.2.6/src/tls.c:547–672  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

545}
546
547static void tlsHandleEvent(tls_connection *conn, int mask) {
548 int ret, conn_error;
549
550 TLSCONN_DEBUG("tlsEventHandler(): fd=%d, state=%d, mask=%d, r=%d, w=%d, flags=%d",
551 fd, conn->c.state, mask, conn->c.read_handler != NULL, conn->c.write_handler != NULL,
552 conn->flags);
553
554 ERR_clear_error();
555
556 switch (conn->c.state) {
557 case CONN_STATE_CONNECTING:
558 conn_error = connGetSocketError((connection *) conn);
559 if (conn_error) {
560 conn->c.last_errno = conn_error;
561 conn->c.state = CONN_STATE_ERROR;
562 } else {
563 if (!(conn->flags & TLS_CONN_FLAG_FD_SET)) {
564 SSL_set_fd(conn->ssl, conn->c.fd);
565 conn->flags |= TLS_CONN_FLAG_FD_SET;
566 }
567 ret = SSL_connect(conn->ssl);
568 if (ret <= 0) {
569 WantIOType want = 0;
570 if (!handleSSLReturnCode(conn, ret, &want)) {
571 registerSSLEvent(conn, want);
572
573 /* Avoid hitting UpdateSSLEvent, which knows nothing
574 * of what SSL_connect() wants and instead looks at our
575 * R/W handlers.
576 */
577 return;
578 }
579
580 /* If not handled, it's an error */
581 conn->c.state = CONN_STATE_ERROR;
582 } else {
583 conn->c.state = CONN_STATE_CONNECTED;
584 }
585 }
586
587 if (!callHandler((connection *) conn, conn->c.conn_handler)) return;
588 conn->c.conn_handler = NULL;
589 break;
590 case CONN_STATE_ACCEPTING:
591 ret = SSL_accept(conn->ssl);
592 if (ret <= 0) {
593 WantIOType want = 0;
594 if (!handleSSLReturnCode(conn, ret, &want)) {
595 /* Avoid hitting UpdateSSLEvent, which knows nothing
596 * of what SSL_connect() wants and instead looks at our
597 * R/W handlers.
598 */
599 registerSSLEvent(conn, want);
600 return;
601 }
602
603 /* If not handled, it's an error */
604 conn->c.state = CONN_STATE_ERROR;

Callers 2

tlsEventHandlerFunction · 0.85
tlsProcessPendingDataFunction · 0.85

Calls 7

connGetSocketErrorFunction · 0.85
handleSSLReturnCodeFunction · 0.85
registerSSLEventFunction · 0.85
callHandlerFunction · 0.85
listAddNodeTailFunction · 0.85
listDelNodeFunction · 0.85
updateSSLEventFunction · 0.85

Tested by

no test coverage detected