Lines Matching defs:sdr

130 typedef void (*ProcessReplyFn)(DNSServiceOp *const sdr, const CallbackHeader *const cbh, const char *msg, const char *const end);
172 DNSServiceOp *sdr;
474 DNSServiceOp *sdr;
510 sdr = malloc(sizeof(DNSServiceOp));
511 if (!sdr)
517 sdr->next = NULL;
518 sdr->primary = NULL;
519 sdr->sockfd = dnssd_InvalidSocket;
520 sdr->validator = sdr->sockfd ^ ValidatorBits;
521 sdr->op = op;
522 sdr->max_index = 0;
523 sdr->logcounter = 0;
524 sdr->moreptr = NULL;
525 sdr->uid.u32[0] = 0;
526 sdr->uid.u32[1] = 0;
527 sdr->ProcessReply = ProcessReply;
528 sdr->AppCallback = AppCallback;
529 sdr->AppContext = AppContext;
530 sdr->rec = NULL;
532 sdr->disp_source = NULL;
533 sdr->disp_queue = NULL;
535 sdr->kacontext = NULL;
542 *p = sdr;
546 sdr->primary = *ref; // Set our primary pointer
547 sdr->sockfd = (*ref)->sockfd; // Inherit primary's socket
548 sdr->validator = (*ref)->validator;
549 sdr->uid = (*ref)->uid;
550 //printf("ConnectToServer sharing socket %d\n", sdr->sockfd);
568 sdr->sockfd = socket(AF_DNSSD, SOCK_STREAM, 0);
569 sdr->validator = sdr->sockfd ^ ValidatorBits;
570 if (!dnssd_SocketValid(sdr->sockfd))
573 FreeDNSServiceOp(sdr);
578 if (setsockopt(sdr->sockfd, SOL_SOCKET, SO_NOSIGPIPE, &optval, sizeof(optval)) < 0)
591 if (setsockopt(sdr->sockfd, SOL_SOCKET, SO_DEFUNCTOK, &defunct, sizeof(defunct)) < 0)
599 int err = connect(sdr->sockfd, (struct sockaddr *) &saddr, sizeof(saddr));
601 break; // If we succeeded, return sdr
616 uds_serverpath, sdr->sockfd, err, dnssd_errno, dnssd_strerror(dnssd_errno));
618 dnssd_close(sdr->sockfd);
619 FreeDNSServiceOp(sdr);
623 //printf("ConnectToServer opened socket %d\n", sdr->sockfd);
626 *ref = sdr;
633 static DNSServiceErrorType deliver_request(ipc_msg_hdr *hdr, DNSServiceOp *sdr)
654 // Note: need to check hdr->op, not sdr->op.
655 // hdr->op contains the code for the specific operation we're currently doing, whereas sdr->op
657 // add_record_request but the parent sdr->op will be connection_request or reg_service_request)
658 MakeSeparateReturnSocket = (sdr->primary ||
661 if (!DNSServiceRefValid(sdr))
665 syslog(LOG_WARNING, "dnssd_clientstub deliver_request: invalid DNSServiceRef %p %08X %08X", sdr, sdr->sockfd, sdr->validator);
737 if (MakeSeparateReturnSocket || sdr->op == send_bpf)
738 datalen--; // Okay to use sdr->op when checking for op == send_bpf
750 if (write_all(sdr->sockfd, ((char *)hdr)+i, 1) < 0)
755 if (write_all(sdr->sockfd, (char *)hdr, datalen + sizeof(ipc_msg_hdr)) < 0)
761 sdr->sockfd, (unsigned long)(datalen + sizeof(ipc_msg_hdr)));
767 errsd = sdr->sockfd;
768 if (MakeSeparateReturnSocket || sdr->op == send_bpf) // Okay to use sdr->op when checking for op == send_bpf
793 if (MakeSeparateReturnSocket || sdr->op == send_bpf) // Okay to use sdr->op when checking for op == send_bpf
795 if (sdr->op == send_bpf)
831 if (sendmsg(sdr->sockfd, &msg, 0) < 0)
856 if (sdr->op == send_bpf) // Okay to use sdr->op when checking for op == send_bpf
907 DNSServiceOp *sdr = sdRef;
913 while (sdr)
915 // We can't touch the sdr after the callback as it can be deallocated in the callback
916 sdrNext = sdr->next;
918 sdr->moreptr = &morebytes;
919 switch (sdr->op)
922 if (sdr->AppCallback) ((DNSServiceResolveReply) sdr->AppCallback)(sdr, 0, 0, error, NULL, 0, 0, 0, NULL, sdr->AppContext);
925 if (sdr->AppCallback) ((DNSServiceQueryRecordReply)sdr->AppCallback)(sdr, 0, 0, error, NULL, 0, 0, 0, NULL, 0, sdr->AppContext);
928 if (sdr->AppCallback) ((DNSServiceGetAddrInfoReply)sdr->AppCallback)(sdr, 0, 0, error, NULL, NULL, 0, sdr->AppContext);
931 if (sdr->AppCallback) ((DNSServiceBrowseReply) sdr->AppCallback)(sdr, 0, 0, error, NULL, 0, NULL, sdr->AppContext);
934 if (sdr->AppCallback) ((DNSServiceRegisterReply) sdr->AppCallback)(sdr, 0, error, NULL, 0, NULL, sdr->AppContext);
937 if (sdr->AppCallback) ((DNSServiceDomainEnumReply) sdr->AppCallback)(sdr, 0, 0, error, NULL, sdr->AppContext);
942 rec = sdr->rec;
946 if (rec->AppCallback) ((DNSServiceRegisterRecordReply)rec->AppCallback)(sdr, 0, 0, error, rec->AppContext);
947 // The Callback can call DNSServiceRefDeallocate which in turn frees sdr and all the records.
954 if (sdr->AppCallback) ((DNSServiceNATPortMappingReply)sdr->AppCallback)(sdr, 0, 0, error, 0, 0, 0, 0, 0, sdr->AppContext);
957 syslog(LOG_WARNING, "dnssd_clientstub CallbackWithError called with bad op %d", sdr->op);
967 if (!morebytes) {syslog(LOG_WARNING, "dnssdclientstub:sdRef: CallbackwithError morebytes zero sdr %p", sdr); return;}
968 else {sdr->moreptr = NULL;}
969 sdr = sdrNext;
1247 static void handle_resolve_response(DNSServiceOp *const sdr, const CallbackHeader *const cbh, const char *data, const char *end)
1265 ((DNSServiceResolveReply)sdr->AppCallback)(sdr, cbh->cb_flags, cbh->cb_interface, cbh->cb_err, fullname, target, port.s, txtlen, txtrecord, sdr->AppContext);
1267 // MUST NOT touch sdr after invoking AppCallback -- client is allowed to dispose it from within callback function
1357 static void handle_query_response(DNSServiceOp *const sdr, const CallbackHeader *const cbh, const char *data, const char *const end)
1372 else ((DNSServiceQueryRecordReply)sdr->AppCallback)(sdr, cbh->cb_flags, cbh->cb_interface, cbh->cb_err, name, rrtype, rrclass, rdlen, rdata, ttl, sdr->AppContext);
1373 // MUST NOT touch sdr after invoking AppCallback -- client is allowed to dispose it from within callback function
1424 static void handle_addrinfo_response(DNSServiceOp *const sdr, const CallbackHeader *const cbh, const char *data, const char *const end)
1482 ((DNSServiceGetAddrInfoReply)sdr->AppCallback)(sdr, cbh->cb_flags, cbh->cb_interface, cbh->cb_err, hostname, sa, ttl, sdr->AppContext);
1484 ((DNSServiceGetAddrInfoReply)sdr->AppCallback)(sdr, cbh->cb_flags, cbh->cb_interface, cbh->cb_err, hostname, NULL, 0, sdr->AppContext);
1485 // MUST NOT touch sdr after invoking AppCallback -- client is allowed to dispose it from within callback function
1532 static void handle_browse_response(DNSServiceOp *const sdr, const CallbackHeader *const cbh, const char *data, const char *const end)
1539 else ((DNSServiceBrowseReply)sdr->AppCallback)(sdr, cbh->cb_flags, cbh->cb_interface, cbh->cb_err, replyName, replyType, replyDomain, sdr->AppContext);
1540 // MUST NOT touch sdr after invoking AppCallback -- client is allowed to dispose it from within callback function
1612 static void handle_regservice_response(DNSServiceOp *const sdr, const CallbackHeader *const cbh, const char *data, const char *const end)
1619 else ((DNSServiceRegisterReply)sdr->AppCallback)(sdr, cbh->cb_flags, cbh->cb_err, name, regtype, domain, sdr->AppContext);
1620 // MUST NOT touch sdr after invoking AppCallback -- client is allowed to dispose it from within callback function
1686 static void handle_enumeration_response(DNSServiceOp *const sdr, const CallbackHeader *const cbh, const char *data, const char *const end)
1691 else ((DNSServiceDomainEnumReply)sdr->AppCallback)(sdr, cbh->cb_flags, cbh->cb_interface, cbh->cb_err, domain, sdr->AppContext);
1692 // MUST NOT touch sdr after invoking AppCallback -- client is allowed to dispose it from within callback function
1734 static void ConnectionResponse(DNSServiceOp *const sdr, const CallbackHeader *const cbh, const char *const data, const char *const end)
1744 DNSServiceOp *op = sdr->next;
1750 // WARNING: Don't touch op or sdr after this -- client may have called DNSServiceRefDeallocate
1756 for (rec = sdr->rec; rec; rec = rec->recnext)
1768 if (rec->sdr != sdr)
1770 syslog(LOG_WARNING, "ConnectionResponse: Record sdr mismatch: rec %p sdr %p", rec->sdr, sdr);
1774 if (sdr->op == connection_request || sdr->op == connection_delegate_request)
1776 rec->AppCallback(rec->sdr, rec, cbh->cb_flags, cbh->cb_err, rec->AppContext);
1780 syslog(LOG_WARNING, "dnssd_clientstub ConnectionResponse: sdr->op != connection_request");
1781 rec->AppCallback(rec->sdr, rec, 0, kDNSServiceErr_Unknown, rec->AppContext);
1783 // MUST NOT touch sdr after invoking AppCallback -- client is allowed to dispose it from within callback function
1955 rref->sdr = sdRef;
2025 rref->sdr = sdRef;
2165 static void handle_port_mapping_response(DNSServiceOp *const sdr, const CallbackHeader *const cbh, const char *data, const char *const end)
2187 ((DNSServiceNATPortMappingReply)sdr->AppCallback)(sdr, cbh->cb_flags, cbh->cb_interface, cbh->cb_err, addr.l, protocol, internalPort.s, externalPort.s, ttl, sdr->AppContext);
2189 // MUST NOT touch sdr after invoking AppCallback -- client is allowed to dispose it from within callback function