| ssize_t ngx_wsarecv_chain(ngx_connection_t *c, ngx_chain_t *chain) |
| ngx_init_array(io, c->pool, 10, sizeof(WSABUF), NGX_ERROR); |
| /* coalesce the neighbouring hunks */ |
| if (prev == chain->hunk->last) { |
| wsabuf->len += chain->hunk->end - chain->hunk->last; |
| ngx_test_null(wsabuf, ngx_push_array(&io), NGX_ERROR); |
| wsabuf->buf = (char *) chain->hunk->last; |
| wsabuf->len = chain->hunk->end - chain->hunk->last; |
| size += chain->hunk->end - chain->hunk->last; |
| ngx_log_debug2(NGX_LOG_DEBUG_EVENT, c->log, 0, |
| "WSARecv: %d:%d", io.nelts, wsabuf->len); |
| rc = WSARecv(c->fd, io.elts, io.nelts, &bytes, &flags, NULL, NULL); |
| if (err == WSAEWOULDBLOCK) { |
| ngx_log_debug0(NGX_LOG_DEBUG_EVENT, c->log, err, |
| ngx_connection_error(c, err, "WSARecv() failed"); |