mirror of
https://gitlab.com/openconnect/ocserv.git
synced 2026-02-10 00:37:00 +08:00
cleanup of cstp_recv() and cstp_recv_nb()
This commit is contained in:
@@ -121,14 +121,17 @@ int ret;
|
||||
return total;
|
||||
}
|
||||
|
||||
/* Restores gnutls_record_recv() on EAGAIN */
|
||||
ssize_t cstp_recv(worker_st *ws, void *data, size_t data_size)
|
||||
{
|
||||
int ret;
|
||||
int counter = 5;
|
||||
|
||||
if (ws->session != NULL) {
|
||||
do {
|
||||
ret = gnutls_record_recv(ws->session, data, data_size);
|
||||
} while (ret < 0 && (ret == GNUTLS_E_INTERRUPTED || ret == GNUTLS_E_AGAIN));
|
||||
counter--;
|
||||
} while (ret == GNUTLS_E_AGAIN && counter > 0);
|
||||
} else {
|
||||
ret = force_read_timeout(ws->conn_fd, data, data_size, 10);
|
||||
}
|
||||
@@ -143,7 +146,7 @@ ssize_t cstp_recv_nb(worker_st *ws, void *data, size_t data_size)
|
||||
if (ws->session != NULL) {
|
||||
ret = gnutls_record_recv(ws->session, data, data_size);
|
||||
} else {
|
||||
ret = recv(ws->conn_fd, data, data_size, 0);
|
||||
ret = force_read_timeout(ws->conn_fd, data, data_size, 10);
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
||||
@@ -762,7 +762,7 @@ void vpn_server(struct worker_st *ws)
|
||||
http_req_reset(ws);
|
||||
/* parse as we go */
|
||||
do {
|
||||
nrecvd = cstp_recv_nb(ws, buf, sizeof(buf));
|
||||
nrecvd = cstp_recv(ws, buf, sizeof(buf));
|
||||
if (nrecvd <= 0) {
|
||||
if (nrecvd == 0)
|
||||
goto finish;
|
||||
@@ -798,7 +798,7 @@ void vpn_server(struct worker_st *ws)
|
||||
/* continue reading */
|
||||
oclog(ws, LOG_HTTP_DEBUG, "HTTP POST %s", ws->req.url);
|
||||
while (ws->req.message_complete == 0) {
|
||||
nrecvd = cstp_recv_nb(ws, buf, sizeof(buf));
|
||||
nrecvd = cstp_recv(ws, buf, sizeof(buf));
|
||||
FATAL_ERR(ws, nrecvd);
|
||||
|
||||
nparsed =
|
||||
|
||||
Reference in New Issue
Block a user