Lines Matching refs:tsd

188   struct thread_sync_data tsd;
193 return &(data->state.async.tdata->tsd);
198 void destroy_thread_sync_data(struct thread_sync_data *tsd)
200 if(tsd->mtx) {
201 Curl_mutex_destroy(tsd->mtx);
202 free(tsd->mtx);
205 free(tsd->hostname);
207 if(tsd->res)
208 Curl_freeaddrinfo(tsd->res);
215 if(tsd->sock_pair[1] != CURL_SOCKET_BAD) {
216 wakeup_close(tsd->sock_pair[1]);
219 memset(tsd, 0, sizeof(*tsd));
229 struct thread_sync_data *tsd = &td->tsd;
231 memset(tsd, 0, sizeof(*tsd));
233 tsd->td = td;
234 tsd->port = port;
238 tsd->done = 1;
241 tsd->hints = *hints;
246 tsd->mtx = malloc(sizeof(curl_mutex_t));
247 if(!tsd->mtx)
250 Curl_mutex_init(tsd->mtx);
254 if(wakeup_create(&tsd->sock_pair[0]) < 0) {
255 tsd->sock_pair[0] = CURL_SOCKET_BAD;
256 tsd->sock_pair[1] = CURL_SOCKET_BAD;
260 tsd->sock_error = CURL_ASYNC_SUCCESS;
265 tsd->hostname = strdup(hostname);
266 if(!tsd->hostname)
273 if(tsd->sock_pair[0] != CURL_SOCKET_BAD) {
274 wakeup_close(tsd->sock_pair[0]);
275 tsd->sock_pair[0] = CURL_SOCKET_BAD;
278 destroy_thread_sync_data(tsd);
284 struct thread_sync_data *tsd = conn_thread_sync_data(data);
287 result = Curl_addrinfo_callback(data, tsd->sock_error, tsd->res);
288 /* The tsd->res structure has been copied to async.dns and perhaps the DNS
291 tsd->res = NULL;
309 struct thread_sync_data *tsd =
314 struct thread_data *td = tsd->td;
315 const ADDRINFOEXW_ *res = tsd->w8.res;
398 tsd->res = cafirst;
401 if(tsd->w8.res) {
402 Curl_FreeAddrInfoExW(tsd->w8.res);
403 tsd->w8.res = NULL;
407 tsd->sock_error = SOCKERRNO?SOCKERRNO:error;
408 if(tsd->sock_error == 0)
409 tsd->sock_error = RESOLVER_ENOMEM;
412 Curl_addrinfo_set_port(tsd->res, tsd->port);
415 Curl_mutex_acquire(tsd->mtx);
416 if(tsd->done) {
418 Curl_mutex_release(tsd->mtx);
419 destroy_thread_sync_data(tsd);
425 if(tsd->sock_pair[1] != CURL_SOCKET_BAD) {
428 if(swrite(tsd->sock_pair[1], buf, sizeof(buf)) < 0) {
430 tsd->sock_error = SOCKERRNO;
434 tsd->done = 1;
435 Curl_mutex_release(tsd->mtx);
452 struct thread_sync_data *tsd = (struct thread_sync_data *)arg;
453 struct thread_data *td = tsd->td;
460 msnprintf(service, sizeof(service), "%d", tsd->port);
462 rc = Curl_getaddrinfo_ex(tsd->hostname, service, &tsd->hints, &tsd->res);
465 tsd->sock_error = SOCKERRNO?SOCKERRNO:rc;
466 if(tsd->sock_error == 0)
467 tsd->sock_error = RESOLVER_ENOMEM;
470 Curl_addrinfo_set_port(tsd->res, tsd->port);
473 Curl_mutex_acquire(tsd->mtx);
474 if(tsd->done) {
476 Curl_mutex_release(tsd->mtx);
477 destroy_thread_sync_data(tsd);
482 if(tsd->sock_pair[1] != CURL_SOCKET_BAD) {
485 if(wakeup_write(tsd->sock_pair[1], buf, sizeof(buf)) < 0) {
487 tsd->sock_error = SOCKERRNO;
491 tsd->done = 1;
492 Curl_mutex_release(tsd->mtx);
505 struct thread_sync_data *tsd = (struct thread_sync_data *)arg;
506 struct thread_data *td = tsd->td;
508 tsd->res = Curl_ipv4_resolve_r(tsd->hostname, tsd->port);
510 if(!tsd->res) {
511 tsd->sock_error = SOCKERRNO;
512 if(tsd->sock_error == 0)
513 tsd->sock_error = RESOLVER_ENOMEM;
516 Curl_mutex_acquire(tsd->mtx);
517 if(tsd->done) {
519 Curl_mutex_release(tsd->mtx);
520 destroy_thread_sync_data(tsd);
524 tsd->done = 1;
525 Curl_mutex_release(tsd->mtx);
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);
566 Curl_GetAddrInfoExCancel(&td->tsd.w8.cancel_ev);
574 destroy_thread_sync_data(&td->tsd);
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;
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);
677 td->tsd.done = 1;
802 Curl_mutex_acquire(td->tsd.mtx);
803 done = td->tsd.done;
804 Curl_mutex_release(td->tsd.mtx);
857 socks[0] = td->tsd.sock_pair[0];
858 td->tsd.data = data;