Lines Matching defs:sdr

131 typedef void (*ProcessReplyFn)(DNSServiceOp *const sdr, const CallbackHeader *const cbh, const char *msg, const char *const end);
173 DNSServiceOp *sdr;
452 DNSServiceOp *sdr;
488 sdr = malloc(sizeof(DNSServiceOp));
489 if (!sdr)
495 sdr->next = NULL;
496 sdr->primary = NULL;
497 sdr->sockfd = dnssd_InvalidSocket;
498 sdr->validator = sdr->sockfd ^ ValidatorBits;
499 sdr->op = op;
500 sdr->max_index = 0;
501 sdr->logcounter = 0;
502 sdr->moreptr = NULL;
503 sdr->uid.u32[0] = 0;
504 sdr->uid.u32[1] = 0;
505 sdr->ProcessReply = ProcessReply;
506 sdr->AppCallback = AppCallback;
507 sdr->AppContext = AppContext;
508 sdr->rec = NULL;
510 sdr->disp_source = NULL;
511 sdr->disp_queue = NULL;
513 sdr->kacontext = NULL;
520 *p = sdr;
524 sdr->primary = *ref; // Set our primary pointer
525 sdr->sockfd = (*ref)->sockfd; // Inherit primary's socket
526 sdr->validator = (*ref)->validator;
527 sdr->uid = (*ref)->uid;
528 //printf("ConnectToServer sharing socket %d\n", sdr->sockfd);
546 sdr->sockfd = socket(AF_DNSSD, SOCK_STREAM, 0);
547 sdr->validator = sdr->sockfd ^ ValidatorBits;
548 if (!dnssd_SocketValid(sdr->sockfd))
551 FreeDNSServiceOp(sdr);
556 if (setsockopt(sdr->sockfd, SOL_SOCKET, SO_NOSIGPIPE, &optval, sizeof(optval)) < 0)
569 if (setsockopt(sdr->sockfd, SOL_SOCKET, SO_DEFUNCTOK, &defunct, sizeof(defunct)) < 0)
577 int err = connect(sdr->sockfd, (struct sockaddr *) &saddr, sizeof(saddr));
579 break; // If we succeeded, return sdr
594 uds_serverpath, sdr->sockfd, err, dnssd_errno, dnssd_strerror(dnssd_errno));
596 dnssd_close(sdr->sockfd);
597 FreeDNSServiceOp(sdr);
601 //printf("ConnectToServer opened socket %d\n", sdr->sockfd);
604 *ref = sdr;
611 static DNSServiceErrorType deliver_request(ipc_msg_hdr *hdr, DNSServiceOp *sdr)
626 // Note: need to check hdr->op, not sdr->op.
627 // hdr->op contains the code for the specific operation we're currently doing, whereas sdr->op
629 // add_record_request but the parent sdr->op will be connection_request or reg_service_request)
630 const int MakeSeparateReturnSocket = (sdr->primary ||
633 if (!DNSServiceRefValid(sdr))
637 syslog(LOG_WARNING, "dnssd_clientstub deliver_request: invalid DNSServiceRef %p %08X %08X", sdr, sdr->sockfd, sdr->validator);
725 if (MakeSeparateReturnSocket || sdr->op == send_bpf)
726 datalen--; // Okay to use sdr->op when checking for op == send_bpf
738 if (write_all(sdr->sockfd, ((char *)hdr)+i, 1) < 0)
743 if (write_all(sdr->sockfd, (char *)hdr, datalen + sizeof(ipc_msg_hdr)) < 0)
749 sdr->sockfd, (unsigned long)(datalen + sizeof(ipc_msg_hdr)));
755 errsd = sdr->sockfd;
756 if (MakeSeparateReturnSocket || sdr->op == send_bpf) // Okay to use sdr->op when checking for op == send_bpf
782 if (MakeSeparateReturnSocket || sdr->op == send_bpf) // Okay to use sdr->op when checking for op == send_bpf
784 if (sdr->op == send_bpf)
820 if (sendmsg(sdr->sockfd, &msg, 0) < 0)
845 if (sdr->op == send_bpf) // Okay to use sdr->op when checking for op == send_bpf
896 DNSServiceOp *sdr = sdRef;
902 while (sdr)
904 // We can't touch the sdr after the callback as it can be deallocated in the callback
905 sdrNext = sdr->next;
907 sdr->moreptr = &morebytes;
908 switch (sdr->op)
911 if (sdr->AppCallback) ((DNSServiceResolveReply) sdr->AppCallback)(sdr, 0, 0, error, NULL, 0, 0, 0, NULL, sdr->AppContext);
914 if (sdr->AppCallback) ((DNSServiceQueryRecordReply)sdr->AppCallback)(sdr, 0, 0, error, NULL, 0, 0, 0, NULL, 0, sdr->AppContext);
917 if (sdr->AppCallback) ((DNSServiceGetAddrInfoReply)sdr->AppCallback)(sdr, 0, 0, error, NULL, NULL, 0, sdr->AppContext);
920 if (sdr->AppCallback) ((DNSServiceBrowseReply) sdr->AppCallback)(sdr, 0, 0, error, NULL, 0, NULL, sdr->AppContext);
923 if (sdr->AppCallback) ((DNSServiceRegisterReply) sdr->AppCallback)(sdr, 0, error, NULL, 0, NULL, sdr->AppContext);
926 if (sdr->AppCallback) ((DNSServiceDomainEnumReply) sdr->AppCallback)(sdr, 0, 0, error, NULL, sdr->AppContext);
931 rec = sdr->rec;
935 if (rec->AppCallback) ((DNSServiceRegisterRecordReply)rec->AppCallback)(sdr, 0, 0, error, rec->AppContext);
936 // The Callback can call DNSServiceRefDeallocate which in turn frees sdr and all the records.
943 if (sdr->AppCallback) ((DNSServiceNATPortMappingReply)sdr->AppCallback)(sdr, 0, 0, error, 0, 0, 0, 0, 0, sdr->AppContext);
946 syslog(LOG_WARNING, "dnssd_clientstub CallbackWithError called with bad op %d", sdr->op);
956 if (!morebytes) {syslog(LOG_WARNING, "dnssdclientstub:sdRef: CallbackwithError morebytes zero sdr %p", sdr); return;}
957 else {sdr->moreptr = NULL;}
958 sdr = sdrNext;
1231 static void handle_resolve_response(DNSServiceOp *const sdr, const CallbackHeader *const cbh, const char *data, const char *end)
1249 ((DNSServiceResolveReply)sdr->AppCallback)(sdr, cbh->cb_flags, cbh->cb_interface, cbh->cb_err, fullname, target, port.s, txtlen, txtrecord, sdr->AppContext);
1251 // MUST NOT touch sdr after invoking AppCallback -- client is allowed to dispose it from within callback function
1340 static void handle_query_response(DNSServiceOp *const sdr, const CallbackHeader *const cbh, const char *data, const char *const end)
1355 else ((DNSServiceQueryRecordReply)sdr->AppCallback)(sdr, cbh->cb_flags, cbh->cb_interface, cbh->cb_err, name, rrtype, rrclass, rdlen, rdata, ttl, sdr->AppContext);
1356 // MUST NOT touch sdr after invoking AppCallback -- client is allowed to dispose it from within callback function
1404 static void handle_addrinfo_response(DNSServiceOp *const sdr, const CallbackHeader *const cbh, const char *data, const char *const end)
1462 ((DNSServiceGetAddrInfoReply)sdr->AppCallback)(sdr, cbh->cb_flags, cbh->cb_interface, cbh->cb_err, hostname, sa, ttl, sdr->AppContext);
1464 ((DNSServiceGetAddrInfoReply)sdr->AppCallback)(sdr, cbh->cb_flags, cbh->cb_interface, cbh->cb_err, hostname, NULL, 0, sdr->AppContext);
1465 // MUST NOT touch sdr after invoking AppCallback -- client is allowed to dispose it from within callback function
1512 static void handle_browse_response(DNSServiceOp *const sdr, const CallbackHeader *const cbh, const char *data, const char *const end)
1519 else ((DNSServiceBrowseReply)sdr->AppCallback)(sdr, cbh->cb_flags, cbh->cb_interface, cbh->cb_err, replyName, replyType, replyDomain, sdr->AppContext);
1520 // MUST NOT touch sdr after invoking AppCallback -- client is allowed to dispose it from within callback function
1584 static void handle_regservice_response(DNSServiceOp *const sdr, const CallbackHeader *const cbh, const char *data, const char *const end)
1591 else ((DNSServiceRegisterReply)sdr->AppCallback)(sdr, cbh->cb_flags, cbh->cb_err, name, regtype, domain, sdr->AppContext);
1592 // MUST NOT touch sdr after invoking AppCallback -- client is allowed to dispose it from within callback function
1658 static void handle_enumeration_response(DNSServiceOp *const sdr, const CallbackHeader *const cbh, const char *data, const char *const end)
1663 else ((DNSServiceDomainEnumReply)sdr->AppCallback)(sdr, cbh->cb_flags, cbh->cb_interface, cbh->cb_err, domain, sdr->AppContext);
1664 // MUST NOT touch sdr after invoking AppCallback -- client is allowed to dispose it from within callback function
1702 static void ConnectionResponse(DNSServiceOp *const sdr, const CallbackHeader *const cbh, const char *const data, const char *const end)
1712 DNSServiceOp *op = sdr->next;
1718 // WARNING: Don't touch op or sdr after this -- client may have called DNSServiceRefDeallocate
1724 for (rec = sdr->rec; rec; rec = rec->recnext)
1736 if (rec->sdr != sdr)
1738 syslog(LOG_WARNING, "ConnectionResponse: Record sdr mismatch: rec %p sdr %p", rec->sdr, sdr);
1742 if (sdr->op == connection_request || sdr->op == connection_delegate_request)
1744 rec->AppCallback(rec->sdr, rec, cbh->cb_flags, cbh->cb_err, rec->AppContext);
1748 syslog(LOG_WARNING, "dnssd_clientstub ConnectionResponse: sdr->op != connection_request");
1749 rec->AppCallback(rec->sdr, rec, 0, kDNSServiceErr_Unknown, rec->AppContext);
1751 // MUST NOT touch sdr after invoking AppCallback -- client is allowed to dispose it from within callback function
1915 rref->sdr = sdRef;
1982 rref->sdr = sdRef;
2115 static void handle_port_mapping_response(DNSServiceOp *const sdr, const CallbackHeader *const cbh, const char *data, const char *const end)
2137 ((DNSServiceNATPortMappingReply)sdr->AppCallback)(sdr, cbh->cb_flags, cbh->cb_interface, cbh->cb_err, addr.l, protocol, internalPort.s, externalPort.s, ttl, sdr->AppContext);
2139 // MUST NOT touch sdr after invoking AppCallback -- client is allowed to dispose it from within callback function