Lines Matching refs:sdRef

371 static void FreeDNSRecords(DNSServiceOp *sdRef)
373 DNSRecord *rec = sdRef->rec;
406 // DNSRecords may have been added to subordinate sdRef e.g., DNSServiceRegister/DNSServiceAddRecord
407 // or on the main sdRef e.g., DNSServiceCreateConnection/DNSServiveRegisterRecord. DNSRecords may have
789 int DNSSD_API DNSServiceRefSockFD(DNSServiceRef sdRef)
791 if (!sdRef) { syslog(LOG_WARNING, "dnssd_clientstub DNSServiceRefSockFD called with NULL DNSServiceRef"); return dnssd_InvalidSocket; }
793 if (!DNSServiceRefValid(sdRef))
796 sdRef, sdRef->sockfd, sdRef->validator);
800 if (sdRef->primary)
802 syslog(LOG_WARNING, "dnssd_clientstub DNSServiceRefSockFD undefined for kDNSServiceFlagsShareConnection subordinate DNSServiceRef %p", sdRef);
806 return (int) sdRef->sockfd;
810 static void CallbackWithError(DNSServiceRef sdRef, DNSServiceErrorType error)
812 DNSServiceOp *sdr = sdRef;
868 // DNSServiceRefDeallocate on the first sdRef frees all other sdrefs.
869 if (!morebytes){syslog(LOG_WARNING, "dnssdclientstub:sdRef: CallbackwithError morebytes zero"); return;}
876 // from the daemon on the socket contained in sdRef, the call will block.
877 DNSServiceErrorType DNSSD_API DNSServiceProcessResult(DNSServiceRef sdRef)
881 if (!sdRef) { syslog(LOG_WARNING, "dnssd_clientstub DNSServiceProcessResult called with NULL DNSServiceRef"); return kDNSServiceErr_BadParam; }
883 if (!DNSServiceRefValid(sdRef))
885 syslog(LOG_WARNING, "dnssd_clientstub DNSServiceProcessResult called with invalid DNSServiceRef %p %08X %08X", sdRef, sdRef->sockfd, sdRef->validator);
889 if (sdRef->primary)
891 syslog(LOG_WARNING, "dnssd_clientstub DNSServiceProcessResult undefined for kDNSServiceFlagsShareConnection subordinate DNSServiceRef %p", sdRef);
895 if (!sdRef->ProcessReply)
912 int result = read_all(sdRef->sockfd, (void *)&cbh.ipc_hdr, sizeof(cbh.ipc_hdr));
915 // Set the ProcessReply to NULL before callback as the sdRef can get deallocated
917 sdRef->ProcessReply = NULL;
922 if (sdRef->disp_source)
924 dispatch_source_cancel(sdRef->disp_source);
925 dispatch_release(sdRef->disp_source);
926 sdRef->disp_source = NULL;
927 CallbackWithError(sdRef, kDNSServiceErr_ServiceNotRunning);
930 // Don't touch sdRef anymore as it might have been deallocated
935 if (morebytes && sdRef->logcounter < 100)
937 sdRef->logcounter++;
947 sdRef->ProcessReply = NULL;
953 if (read_all(sdRef->sockfd, data, cbh.ipc_hdr.datalen) < 0) // On error, read_all will write a message to syslog for us
955 // Set the ProcessReply to NULL before callback as the sdRef can get deallocated
957 sdRef->ProcessReply = NULL;
962 if (sdRef->disp_source)
964 dispatch_source_cancel(sdRef->disp_source);
965 dispatch_release(sdRef->disp_source);
966 sdRef->disp_source = NULL;
967 CallbackWithError(sdRef, kDNSServiceErr_ServiceNotRunning);
970 // Don't touch sdRef anymore as it might have been deallocated
984 morebytes = more_bytes(sdRef->sockfd);
988 sdRef->moreptr = &morebytes;
990 if (ptr) sdRef->ProcessReply(sdRef, &cbh, ptr, data + cbh.ipc_hdr.datalen);
992 // If morebytes is non-zero, that means we set sdRef->moreptr above, and the operation was not
993 // cancelled out from under us, so now we need to clear sdRef->moreptr so we don't leave a stray
996 // (a) morebytes was 0 above, so we didn't set sdRef->moreptr, so we don't need to clear it
997 // (b) morebytes was 1 above, and we set sdRef->moreptr, but the operation was cancelled (with DNSServiceRefDeallocate()),
998 // so we MUST NOT try to dereference our stale sdRef pointer.
999 if (morebytes) sdRef->moreptr = NULL;
1007 void DNSSD_API DNSServiceRefDeallocate(DNSServiceRef sdRef)
1009 if (!sdRef) { syslog(LOG_WARNING, "dnssd_clientstub DNSServiceRefDeallocate called with NULL DNSServiceRef"); return; }
1011 if (!DNSServiceRefValid(sdRef)) // Also verifies dnssd_SocketValid(sdRef->sockfd) for us too
1013 syslog(LOG_WARNING, "dnssd_clientstub DNSServiceRefDeallocate called with invalid DNSServiceRef %p %08X %08X", sdRef, sdRef->sockfd, sdRef->validator);
1018 if (sdRef->moreptr) *(sdRef->moreptr) = 0;
1020 if (sdRef->primary) // If this is a subordinate DNSServiceOp, just send a 'stop' command
1022 DNSServiceOp **p = &sdRef->primary->next;
1023 while (*p && *p != sdRef) p = &(*p)->next;
1028 ipc_msg_hdr *hdr = create_hdr(cancel_request, &len, &ptr, 0, sdRef);
1032 write_all(sdRef->sockfd, (char *)hdr, len);
1035 *p = sdRef->next;
1036 FreeDNSServiceOp(sdRef);
1043 if (sdRef->disp_source)
1052 sdRef->ProcessReply = NULL;
1053 dispatch_source_cancel(sdRef->disp_source);
1054 dispatch_release(sdRef->disp_source);
1055 sdRef->disp_source = NULL;
1060 else if (!sdRef->disp_queue) dnssd_close(sdRef->sockfd);
1062 dnssd_close(sdRef->sockfd);
1066 while (sdRef)
1068 DNSServiceOp *p = sdRef;
1069 sdRef = sdRef->next;
1134 DNSServiceRef *sdRef,
1161 err = ConnectToServer(sdRef, flags, resolve_request, handle_resolve_response, callBack, context);
1162 if (err) return err; // On error ConnectToServer leaves *sdRef set to NULL
1171 hdr = create_hdr(resolve_request, &len, &ptr, (*sdRef)->primary ? 1 : 0, *sdRef);
1172 if (!hdr) { DNSServiceRefDeallocate(*sdRef); *sdRef = NULL; return kDNSServiceErr_NoMemory; }
1180 err = deliver_request(hdr, *sdRef); // Will free hdr for us
1181 if (err) { DNSServiceRefDeallocate(*sdRef); *sdRef = NULL; }
1206 DNSServiceRef *sdRef,
1219 DNSServiceErrorType err = ConnectToServer(sdRef, flags, query_request, handle_query_response, callBack, context);
1220 if (err) return err; // On error ConnectToServer leaves *sdRef set to NULL
1230 hdr = create_hdr(query_request, &len, &ptr, (*sdRef)->primary ? 1 : 0, *sdRef);
1231 if (!hdr) { DNSServiceRefDeallocate(*sdRef); *sdRef = NULL; return kDNSServiceErr_NoMemory; }
1239 err = deliver_request(hdr, *sdRef); // Will free hdr for us
1240 if (err) { DNSServiceRefDeallocate(*sdRef); *sdRef = NULL; }
1301 DNSServiceRef *sdRef,
1317 err = ConnectToServer(sdRef, flags, addrinfo_request, handle_addrinfo_response, callBack, context);
1318 if (err) return err; // On error ConnectToServer leaves *sdRef set to NULL
1326 hdr = create_hdr(addrinfo_request, &len, &ptr, (*sdRef)->primary ? 1 : 0, *sdRef);
1327 if (!hdr) { DNSServiceRefDeallocate(*sdRef); *sdRef = NULL; return kDNSServiceErr_NoMemory; }
1334 err = deliver_request(hdr, *sdRef); // Will free hdr for us
1335 if (err) { DNSServiceRefDeallocate(*sdRef); *sdRef = NULL; }
1352 DNSServiceRef *sdRef,
1364 DNSServiceErrorType err = ConnectToServer(sdRef, flags, browse_request, handle_browse_response, callBack, context);
1365 if (err) return err; // On error ConnectToServer leaves *sdRef set to NULL
1373 hdr = create_hdr(browse_request, &len, &ptr, (*sdRef)->primary ? 1 : 0, *sdRef);
1374 if (!hdr) { DNSServiceRefDeallocate(*sdRef); *sdRef = NULL; return kDNSServiceErr_NoMemory; }
1381 err = deliver_request(hdr, *sdRef); // Will free hdr for us
1382 if (err) { DNSServiceRefDeallocate(*sdRef); *sdRef = NULL; }
1398 DNSServiceRef *sdRef,
1408 DNSServiceErrorType err = ConnectToServer(sdRef, flags, sethost_request, handle_hostname_changed_response, callBack, context);
1413 hdr = create_hdr(sethost_request, &len, &ptr, (*sdRef)->primary ? 1 : 0, *sdRef);
1414 if (!hdr) { DNSServiceRefDeallocate(*sdRef); *sdRef = NULL; return kDNSServiceErr_NoMemory; }
1418 err = deliver_request(hdr, *sdRef); // Will free hdr for us
1419 if (err) { DNSServiceRefDeallocate(*sdRef); *sdRef = NULL; }
1456 DNSServiceRef *sdRef,
1485 err = ConnectToServer(sdRef, flags, reg_service_request, callBack ? handle_regservice_response : NULL, callBack, context);
1486 if (err) return err; // On error ConnectToServer leaves *sdRef set to NULL
1494 hdr = create_hdr(reg_service_request, &len, &ptr, (*sdRef)->primary ? 1 : 0, *sdRef);
1495 if (!hdr) { DNSServiceRefDeallocate(*sdRef); *sdRef = NULL; return kDNSServiceErr_NoMemory; }
1509 err = deliver_request(hdr, *sdRef); // Will free hdr for us
1510 if (err) { DNSServiceRefDeallocate(*sdRef); *sdRef = NULL; }
1525 DNSServiceRef *sdRef,
1541 err = ConnectToServer(sdRef, flags, enumeration_request, handle_enumeration_response, callBack, context);
1542 if (err) return err; // On error ConnectToServer leaves *sdRef set to NULL
1547 hdr = create_hdr(enumeration_request, &len, &ptr, (*sdRef)->primary ? 1 : 0, *sdRef);
1548 if (!hdr) { DNSServiceRefDeallocate(*sdRef); *sdRef = NULL; return kDNSServiceErr_NoMemory; }
1553 err = deliver_request(hdr, *sdRef); // Will free hdr for us
1554 if (err) { DNSServiceRefDeallocate(*sdRef); *sdRef = NULL; }
1589 DNSServiceErrorType DNSSD_API DNSServiceCreateConnection(DNSServiceRef *sdRef)
1594 DNSServiceErrorType err = ConnectToServer(sdRef, 0, connection_request, ConnectionResponse, NULL, NULL);
1595 if (err) return err; // On error ConnectToServer leaves *sdRef set to NULL
1597 hdr = create_hdr(connection_request, &len, &ptr, 0, *sdRef);
1598 if (!hdr) { DNSServiceRefDeallocate(*sdRef); *sdRef = NULL; return kDNSServiceErr_NoMemory; }
1600 err = deliver_request(hdr, *sdRef); // Will free hdr for us
1601 if (err) { DNSServiceRefDeallocate(*sdRef); *sdRef = NULL; }
1607 DNSServiceRef sdRef,
1630 if (!sdRef) { syslog(LOG_WARNING, "dnssd_clientstub DNSServiceRegisterRecord called with NULL DNSServiceRef"); return kDNSServiceErr_BadParam; }
1632 if (!DNSServiceRefValid(sdRef))
1634 syslog(LOG_WARNING, "dnssd_clientstub DNSServiceRegisterRecord called with invalid DNSServiceRef %p %08X %08X", sdRef, sdRef->sockfd, sdRef->validator);
1638 if (sdRef->op != connection_request)
1640 syslog(LOG_WARNING, "dnssd_clientstub DNSServiceRegisterRecord called with non-DNSServiceCreateConnection DNSServiceRef %p %d", sdRef, sdRef->op);
1652 hdr = create_hdr(reg_record_request, &len, &ptr, 1, sdRef);
1668 rref->record_index = sdRef->max_index++;
1669 rref->sdr = sdRef;
1675 p = &(sdRef)->rec;
1679 return deliver_request(hdr, sdRef); // Will free hdr for us
1682 // sdRef returned by DNSServiceRegister()
1685 DNSServiceRef sdRef,
1700 if (!sdRef) { syslog(LOG_WARNING, "dnssd_clientstub DNSServiceAddRecord called with NULL DNSServiceRef"); return kDNSServiceErr_BadParam; }
1702 if (sdRef->op != reg_service_request)
1704 syslog(LOG_WARNING, "dnssd_clientstub DNSServiceAddRecord called with non-DNSServiceRegister DNSServiceRef %p %d", sdRef, sdRef->op);
1708 if (!DNSServiceRefValid(sdRef))
1710 syslog(LOG_WARNING, "dnssd_clientstub DNSServiceAddRecord called with invalid DNSServiceRef %p %08X %08X", sdRef, sdRef->sockfd, sdRef->validator);
1721 hdr = create_hdr(add_record_request, &len, &ptr, 1, sdRef);
1733 rref->record_index = sdRef->max_index++;
1734 rref->sdr = sdRef;
1739 p = &(sdRef)->rec;
1743 return deliver_request(hdr, sdRef); // Will free hdr for us
1749 DNSServiceRef sdRef,
1761 if (!sdRef) { syslog(LOG_WARNING, "dnssd_clientstub DNSServiceUpdateRecord called with NULL DNSServiceRef"); return kDNSServiceErr_BadParam; }
1763 if (!DNSServiceRefValid(sdRef))
1765 syslog(LOG_WARNING, "dnssd_clientstub DNSServiceUpdateRecord called with invalid DNSServiceRef %p %08X %08X", sdRef, sdRef->sockfd, sdRef->validator);
1776 hdr = create_hdr(update_record_request, &len, &ptr, 1, sdRef);
1783 return deliver_request(hdr, sdRef); // Will free hdr for us
1788 DNSServiceRef sdRef,
1798 if (!sdRef) { syslog(LOG_WARNING, "dnssd_clientstub DNSServiceRemoveRecord called with NULL DNSServiceRef"); return kDNSServiceErr_BadParam; }
1800 if (!sdRef->max_index) { syslog(LOG_WARNING, "dnssd_clientstub DNSServiceRemoveRecord called with bad DNSServiceRef"); return kDNSServiceErr_BadReference; }
1802 if (!DNSServiceRefValid(sdRef))
1804 syslog(LOG_WARNING, "dnssd_clientstub DNSServiceRemoveRecord called with invalid DNSServiceRef %p %08X %08X", sdRef, sdRef->sockfd, sdRef->validator);
1809 hdr = create_hdr(remove_record_request, &len, &ptr, 1, sdRef);
1813 err = deliver_request(hdr, sdRef); // Will free hdr for us
1818 DNSRecord **p = &sdRef->rec;
1898 DNSServiceRef *sdRef,
1915 DNSServiceErrorType err = ConnectToServer(sdRef, flags, port_mapping_request, handle_port_mapping_response, callBack, context);
1916 if (err) return err; // On error ConnectToServer leaves *sdRef set to NULL
1925 hdr = create_hdr(port_mapping_request, &len, &ptr, (*sdRef)->primary ? 1 : 0, *sdRef);
1926 if (!hdr) { DNSServiceRefDeallocate(*sdRef); *sdRef = NULL; return kDNSServiceErr_NoMemory; }
1937 err = deliver_request(hdr, *sdRef); // Will free hdr for us
1938 if (err) { DNSServiceRefDeallocate(*sdRef); *sdRef = NULL; }