cleanup of cstp_recv() and cstp_recv_nb()

This commit is contained in:
Nikos Mavrogiannopoulos
2014-10-05 14:19:05 +02:00
parent c2640d0076
commit 02dcbe6e56
2 changed files with 7 additions and 4 deletions

View File

@@ -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;

View File

@@ -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 =