http2: Fix busy loop when EOF is encountered

Previously we did not handle EOF from underlying transport socket and
wrongly just returned error code CURL_AGAIN from http2_recv, which
caused busy loop since socket has been closed.  This patch adds the
code to handle EOF situation and tells the upper layer that we got
EOF.
This commit is contained in:
Tatsuhiro Tsujikawa 2014-09-13 11:59:23 +09:00 коммит произвёл Daniel Stenberg
Родитель 1d2ffb4712
Коммит 7d9bef9286
1 изменённых файлов: 6 добавлений и 0 удалений

Просмотреть файл

@ -744,6 +744,12 @@ static ssize_t http2_recv(struct connectdata *conn, int sockindex,
}
infof(conn->data, "nread=%zd\n", nread);
if(nread == 0) {
failf(conn->data, "EOF");
return 0;
}
rv = nghttp2_session_mem_recv(httpc->h2,
(const uint8_t *)httpc->inbuf, nread);