Skip to content

Commit 7712e77

Browse files
committed
loxilb-io/loxilb-ingress#12 Fixed potential issue resulting from non-blocking read
1 parent 46ead7d commit 7712e77

File tree

1 file changed

+15
-15
lines changed

1 file changed

+15
-15
lines changed

common/sockproxy.c

+15-15
Original file line numberDiff line numberDiff line change
@@ -1743,16 +1743,16 @@ proxy_ssl_accept(void *ssl, int fd)
17431743
sel_rc = 0;
17441744
switch (SSL_get_error(ssl, ssl_rc)) {
17451745
case SSL_ERROR_WANT_READ:
1746-
log_error("ssl-accept want-read %s",
1746+
log_trace("ssl-accept want-read %s",
17471747
ERR_error_string(ERR_get_error(), NULL));
17481748
pfds.events = POLLIN;
1749-
sel_rc = poll(&pfds, 1, 30);
1749+
sel_rc = poll(&pfds, 1, 100);
17501750
break;
17511751
case SSL_ERROR_WANT_WRITE:
1752-
log_error("ssl-accept want-write %s",
1752+
log_trace("ssl-accept want-write %s",
17531753
ERR_error_string(ERR_get_error(), NULL));
17541754
pfds.events = POLLOUT;
1755-
sel_rc = poll(&pfds, 1, 30);
1755+
sel_rc = poll(&pfds, 1, 100);
17561756
break;
17571757
default:
17581758
log_error("ssl-accept failed %s",
@@ -2031,17 +2031,6 @@ proxy_notifier(int fd, notify_type_t type, void *priv)
20312031

20322032
new_sd = get_mapped_proxy_fd(new_sd, 1);
20332033

2034-
if (ent->val.ssl_ctx) {
2035-
ssl = SSL_new(ent->val.ssl_ctx);
2036-
assert(ssl);
2037-
SSL_set_fd(ssl, new_sd);
2038-
if (proxy_ssl_accept(ssl, new_sd) < 0) {
2039-
SSL_free(ssl);
2040-
close(new_sd);
2041-
continue;
2042-
}
2043-
}
2044-
20452034
if (proxy_skmap_key_from_fd(new_sd, &key, &protocol)) {
20462035
log_error("skmap key from fd failed");
20472036
if (ssl) {
@@ -2054,6 +2043,17 @@ proxy_notifier(int fd, notify_type_t type, void *priv)
20542043

20552044
proxy_sock_set_opts(new_sd, protocol);
20562045

2046+
if (ent->val.ssl_ctx) {
2047+
ssl = SSL_new(ent->val.ssl_ctx);
2048+
assert(ssl);
2049+
SSL_set_fd(ssl, new_sd);
2050+
if (proxy_ssl_accept(ssl, new_sd) < 0) {
2051+
SSL_free(ssl);
2052+
close(new_sd);
2053+
continue;
2054+
}
2055+
}
2056+
20572057
proxy_log("new accept()", &key);
20582058
log_trace("newfd = %d", new_sd);
20592059

0 commit comments

Comments
 (0)