Message ID | 20190827163439.16686-2-mreitz@redhat.com |
---|---|
State | New |
Headers | show |
Series | [1/6] curl: Keep pointer to the CURLState in CURLSocket | expand |
On 8/27/19 12:34 PM, Max Reitz wrote: > A follow-up patch will make curl_multi_do() and curl_multi_read() take a > CURLSocket instead of the CURLState. They still need the latter, > though, so add a pointer to it to the former. > > Cc: qemu-stable@nongnu.org > Signed-off-by: Max Reitz <mreitz@redhat.com> > --- > block/curl.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/block/curl.c b/block/curl.c > index d4c8e94f3e..92dc2f630e 100644 > --- a/block/curl.c > +++ b/block/curl.c > @@ -80,6 +80,7 @@ static CURLMcode __curl_multi_socket_action(CURLM *multi_handle, The line that git/diff chooses as context is sometimes so very funny. > #define CURL_BLOCK_OPT_TIMEOUT_DEFAULT 5 > > struct BDRVCURLState; > +struct CURLState; > > static bool libcurl_initialized; > > @@ -97,6 +98,7 @@ typedef struct CURLAIOCB { > > typedef struct CURLSocket { > int fd; > + struct CURLState *state; > QLIST_ENTRY(CURLSocket) next; > } CURLSocket; > > @@ -180,6 +182,7 @@ static int curl_sock_cb(CURL *curl, curl_socket_t fd, int action, > if (!socket) { > socket = g_new0(CURLSocket, 1); > socket->fd = fd; > + socket->state = state; > QLIST_INSERT_HEAD(&state->sockets, socket, next); > } > socket = NULL; > So a State contains a list of sockets, and the socket has a link to the state that created it. OK. So far so harmless. Reviewed-by: John Snow <jsnow@redhat.com>
diff --git a/block/curl.c b/block/curl.c index d4c8e94f3e..92dc2f630e 100644 --- a/block/curl.c +++ b/block/curl.c @@ -80,6 +80,7 @@ static CURLMcode __curl_multi_socket_action(CURLM *multi_handle, #define CURL_BLOCK_OPT_TIMEOUT_DEFAULT 5 struct BDRVCURLState; +struct CURLState; static bool libcurl_initialized; @@ -97,6 +98,7 @@ typedef struct CURLAIOCB { typedef struct CURLSocket { int fd; + struct CURLState *state; QLIST_ENTRY(CURLSocket) next; } CURLSocket; @@ -180,6 +182,7 @@ static int curl_sock_cb(CURL *curl, curl_socket_t fd, int action, if (!socket) { socket = g_new0(CURLSocket, 1); socket->fd = fd; + socket->state = state; QLIST_INSERT_HEAD(&state->sockets, socket, next); } socket = NULL;
A follow-up patch will make curl_multi_do() and curl_multi_read() take a CURLSocket instead of the CURLState. They still need the latter, though, so add a pointer to it to the former. Cc: qemu-stable@nongnu.org Signed-off-by: Max Reitz <mreitz@redhat.com> --- block/curl.c | 3 +++ 1 file changed, 3 insertions(+)