MCPcopy Create free account
hub / github.com/Snapchat/KeyDB / connTLSRead

Function connTLSRead

src/tls.cpp:1096–1127  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1094}
1095
1096static int connTLSRead(connection *conn_, void *buf, size_t buf_len) {
1097 tls_connection *conn = (tls_connection *) conn_;
1098 int ret;
1099 int ssl_err;
1100
1101 serverAssert(conn->el == serverTL->el);
1102
1103 if (conn->c.state != CONN_STATE_CONNECTED) return -1;
1104 ERR_clear_error();
1105 ret = SSL_read(conn->ssl, buf, buf_len);
1106 if (ret <= 0) {
1107 WantIOType want = WANT_INVALID;
1108 if (!(ssl_err = handleSSLReturnCode(conn, ret, &want))) {
1109 if (want == WANT_WRITE) conn->flags |= TLS_CONN_FLAG_READ_WANT_WRITE;
1110 updateSSLEvent(conn);
1111
1112 errno = EAGAIN;
1113 return -1;
1114 } else {
1115 if (ssl_err == SSL_ERROR_ZERO_RETURN ||
1116 ((ssl_err == SSL_ERROR_SYSCALL) && !errno)) {
1117 conn->c.state = CONN_STATE_CLOSED;
1118 return 0;
1119 } else {
1120 conn->c.state = CONN_STATE_ERROR;
1121 return -1;
1122 }
1123 }
1124 }
1125
1126 return ret;
1127}
1128
1129static const char *connTLSGetLastError(connection *conn_) {
1130 tls_connection *conn = (tls_connection *) conn_;

Callers

nothing calls this directly

Calls 2

handleSSLReturnCodeFunction · 0.85
updateSSLEventFunction · 0.85

Tested by

no test coverage detected