Lines Matching refs:td

178   struct thread_data *td; /* for thread-self cleanup */
224 int init_thread_sync_data(struct thread_data *td,
229 struct thread_sync_data *tsd = &td->tsd;
233 tsd->td = td;
314 struct thread_data *td = tsd->td;
420 free(td);
436 if(td->complete_ev)
437 SetEvent(td->complete_ev); /* Notify caller that the query completed */
453 struct thread_data *td = tsd->td;
478 free(td);
506 struct thread_data *td = tsd->td;
521 free(td);
539 struct thread_data *td = async->tdata;
542 curl_socket_t sock_rd = td->tsd.sock_pair[0];
543 struct Curl_easy *data = td->tsd.data;
550 Curl_mutex_acquire(td->tsd.mtx);
551 done = td->tsd.done;
552 td->tsd.done = 1;
553 Curl_mutex_release(td->tsd.mtx);
557 if(td->complete_ev)
558 CloseHandle(td->complete_ev);
561 Curl_thread_destroy(td->thread_hnd);
565 if(td->complete_ev) {
566 Curl_GetAddrInfoExCancel(&td->tsd.w8.cancel_ev);
567 WaitForSingleObject(td->complete_ev, INFINITE);
568 CloseHandle(td->complete_ev);
571 if(td->thread_hnd != curl_thread_t_null)
572 Curl_thread_join(&td->thread_hnd);
574 destroy_thread_sync_data(&td->tsd);
603 struct thread_data *td = calloc(1, sizeof(struct thread_data));
607 data->state.async.tdata = td;
608 if(!td)
615 td->thread_hnd = curl_thread_t_null;
617 td->complete_ev = NULL;
620 if(!init_thread_sync_data(td, hostname, port, hints)) {
622 free(td);
632 td->tsd.done = 0;
649 td->tsd.w8.hints.ai_family = hints->ai_family;
650 td->tsd.w8.hints.ai_socktype = hints->ai_socktype;
651 td->complete_ev = CreateEvent(NULL, TRUE, FALSE, NULL);
652 if(!td->complete_ev) {
654 td->tsd.done = 1;
658 NULL, &td->tsd.w8.hints, &td->tsd.w8.res,
659 NULL, &td->tsd.w8.overlapped,
660 &query_complete, &td->tsd.w8.cancel_ev);
662 query_complete(err, 0, &td->tsd.w8.overlapped);
670 td->thread_hnd = Curl_thread_create(getaddrinfo_thread, &td->tsd);
672 td->thread_hnd = Curl_thread_create(gethostbyname_thread, &td->tsd);
675 if(!td->thread_hnd) {
677 td->tsd.done = 1;
699 struct thread_data *td;
703 td = data->state.async.tdata;
704 DEBUGASSERT(td);
706 DEBUGASSERT(td->complete_ev || td->thread_hnd != curl_thread_t_null);
708 DEBUGASSERT(td->thread_hnd != curl_thread_t_null);
713 if(td->complete_ev) {
714 WaitForSingleObject(td->complete_ev, INFINITE);
715 CloseHandle(td->complete_ev);
721 if(Curl_thread_join(&td->thread_hnd)) {
752 struct thread_data *td = data->state.async.tdata;
757 if(td && td->thread_hnd != curl_thread_t_null
791 struct thread_data *td = data->state.async.tdata;
797 if(!td) {
798 DEBUGASSERT(td);
802 Curl_mutex_acquire(td->tsd.mtx);
803 done = td->tsd.done;
804 Curl_mutex_release(td->tsd.mtx);
825 if(td->poll_interval == 0)
827 td->poll_interval = 1;
828 else if(elapsed >= td->interval_end)
830 td->poll_interval *= 2;
832 if(td->poll_interval > 250)
833 td->poll_interval = 250;
835 td->interval_end = elapsed + td->poll_interval;
836 Curl_expire(data, td->poll_interval, EXPIRE_ASYNC_NAME);
849 struct thread_data *td = data->state.async.tdata;
855 if(td) {
857 socks[0] = td->tsd.sock_pair[0];
858 td->tsd.data = data;