From 148ca433671897db78ccab9801698bb849775348 Mon Sep 17 00:00:00 2001 From: Brian Boru Date: Mon, 11 Jan 2021 14:43:04 +0200 Subject: [PATCH] fix --- src/libexssl/sslwnet.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/libexssl/sslwnet.c b/src/libexssl/sslwnet.c index 3481d8a..fa7e873 100644 --- a/src/libexssl/sslwnet.c +++ b/src/libexssl/sslwnet.c @@ -256,7 +256,7 @@ int sslws_recv (SSL *ssl, netbuf_t *nbuf, ws_t *result) { static int sslws_ev_open (int fd, ssl_srv_t *srv, uint32_t flags, http_url_t *h_url) { int rc = NET_ERROR; ssize_t rd; - ssl_ev_t *ev = (ssl_ev_t*)&srv->fd_info[fd]; + ssl_ev_t *ev = (ssl_ev_t*)(srv->fd_info + fd * srv->ev_size); str_t *req; strbuf_t buf; if (!(flags & NF_CLIENT)) @@ -275,8 +275,9 @@ static int sslws_ev_open (int fd, ssl_srv_t *srv, uint32_t flags, http_url_t *h_ if (req->len == ssl_send(ev->ssl, req->ptr, req->len)) { while ((rd = ssl_recv(ev->ssl, &buf)) > 0) { if (buf.len > 4 && 0 == cmpstr(buf.ptr+buf.len-4, 4, CONST_STR_LEN("\r\n\r\n"))) { // FIXME : parse response, save tail + net_ev_t *ev = srv->fd_info + fd * srv->ev_size; rc = NET_WAIT; - srv->fd_info[fd].nf_flags |= NF_WSCONNECTED; + ev->nf_flags |= NF_WSCONNECTED; break; } } @@ -287,7 +288,7 @@ static int sslws_ev_open (int fd, ssl_srv_t *srv, uint32_t flags, http_url_t *h_ } static int sslws_ev_recv (int fd, ssl_srv_t *srv) { - ssl_ev_t *ev = (ssl_ev_t*)&srv->fd_info[fd]; + ssl_ev_t *ev = (ssl_ev_t*)(srv->fd_info + fd * srv->ev_size); if (!(ev->nf_flags & NF_SSLACCEPTED)) { switch (ssl_accept(srv->ctx_srv, fd, &ev->ssl)) { case -1: @@ -322,7 +323,7 @@ static int sslws_ev_recv (int fd, ssl_srv_t *srv) { free(url.ptr); return NET_ERROR; } - srv->fd_info[fd].ver = ver; + ev->ver = ver; } free(url.ptr); } @@ -341,7 +342,7 @@ static int sslws_ev_recv (int fd, ssl_srv_t *srv) { static int ssl_ev_send (int fd, ssl_srv_t *srv) { ssize_t rc; cstr_t *buf; - ssl_ev_t *ev = (ssl_ev_t*)&srv->fd_info[fd]; + ssl_ev_t *ev = (ssl_ev_t*)(srv->fd_info + fd * srv->ev_size); if (!ev->ssl) return NET_OK; ticket_lock(&ev->locker); @@ -354,7 +355,7 @@ static int ssl_ev_send (int fd, ssl_srv_t *srv) { } static int ssl_close_ev (int fd, ssl_srv_t *srv) { - ssl_ev_t *ev = (ssl_ev_t*)&srv->fd_info[fd]; + ssl_ev_t *ev = (ssl_ev_t*)(srv->fd_info + fd * srv->ev_size); if (ev->ssl) { SSL_shutdown(ev->ssl); SSL_free(ev->ssl); -- 2.11.4.GIT