On Thu, 05/23 15:55, Stefan Hajnoczi wrote: > On Thu, May 23, 2013 at 11:38:03AM +0800, Fam Zheng wrote: > > diff --git a/block/curl.c b/block/curl.c > > index fc464ad..4fd5bb9 100644 > > --- a/block/curl.c > > +++ b/block/curl.c > > @@ -89,6 +89,7 @@ typedef struct BDRVCURLState { > > QLIST_HEAD(, CURLSockInfo) socks; > > char *url; > > size_t readahead_size; > > + QEMUTimer *timer; > > /* Whether http server accept range in header */ > > bool accept_range; > > } BDRVCURLState; > > @@ -148,6 +149,38 @@ static size_t curl_header_cb(void *ptr, size_t size, > > size_t nmemb, void *opaque) > > return realsize; > > } > > > > +static void curl_timer_cb(void *opaque) > > +{ > > + int running; > > + BDRVCURLState *bs = (BDRVCURLState *)opaque; > > Please call it 's'. 'bs' is for BlockDriverState*. > > Also, there is no need to cast void* to BDRVCURLState*, the conversion > is implicit. > > > + DPRINTF("curl timeout!\n"); > > + curl_multi_socket_action(bs->multi, CURL_SOCKET_TIMEOUT, 0, &running); > > +} > > + > > +/* Call back for curl_multi interface */ > > +static int curl_multi_timer_cb(CURLM *multi, long timeout_ms, void *s) > > +{ > > + BDRVCURLState *bs = (BDRVCURLState *)s; > > Same here. >
OK. -- Fam