http2: switch recv/send functions to http2 ones after 101
This commit is contained in:
parent
8d3608f2ad
commit
53940f8834
@ -152,6 +152,9 @@ struct HTTP {
|
||||
struct http_conn {
|
||||
#ifdef USE_NGHTTP2
|
||||
nghttp2_session *h2;
|
||||
char *mem; /* points to a buffer in memory to store or read from */
|
||||
size_t size; /* size of the buffer 'mem' points to */
|
||||
ssize_t nread; /* how much data that was sent/recv by the HTTP2 engine */
|
||||
#else
|
||||
int unused; /* prevent a compiler warning */
|
||||
#endif
|
||||
|
38
lib/http2.c
38
lib/http2.c
@ -111,7 +111,7 @@ static ssize_t recv_callback(nghttp2_session *h2,
|
||||
{
|
||||
struct connectdata *conn = (struct connectdata *)userp;
|
||||
ssize_t nread;
|
||||
CURLcode rc = Curl_read(conn, conn->sock[0], (char *)buf, length, &nread);
|
||||
CURLcode rc = Curl_read_plain(conn->sock[0], (char *)buf, length, &nread);
|
||||
(void)h2;
|
||||
(void)flags;
|
||||
|
||||
@ -208,10 +208,46 @@ CURLcode Curl_http2_request(Curl_send_buffer *req,
|
||||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
* If the read would block (EWOULDBLOCK) we return -1. Otherwise we return
|
||||
* a regular CURLcode value.
|
||||
*/
|
||||
static ssize_t http2_recv(struct connectdata *conn, int sockindex,
|
||||
char *mem, size_t len, CURLcode *err)
|
||||
{
|
||||
int rc;
|
||||
(void)sockindex; /* we always do HTTP2 on sockindex 0 */
|
||||
|
||||
conn->proto.httpc.mem = mem;
|
||||
conn->proto.httpc.size = len;
|
||||
|
||||
rc = nghttp2_session_recv(conn->proto.httpc.h2);
|
||||
|
||||
if(rc < 0) {
|
||||
*err = CURLE_RECV_ERROR;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* return number of received (decrypted) bytes */
|
||||
static ssize_t http2_send(struct connectdata *conn, int sockindex,
|
||||
const void *mem, size_t len, CURLcode *err)
|
||||
{
|
||||
/* TODO: proper implementation */
|
||||
(void)conn;
|
||||
(void)sockindex;
|
||||
(void)mem;
|
||||
(void)len;
|
||||
(void)err;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void Curl_http2_switched(struct connectdata *conn)
|
||||
{
|
||||
/* we are switched! */
|
||||
conn->handler = &Curl_handler_http2;
|
||||
conn->recv[FIRSTSOCKET] = http2_recv;
|
||||
conn->send[FIRSTSOCKET] = http2_send;
|
||||
infof(conn->data, "We have switched to HTTP2\n");
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user