X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2Fdnssd.c;fp=src%2Flib%2Fdnssd.c;h=3f6d9cf283c748e77bcca4a0105a2a15ba8be31f;hb=067f00ef04240a933923b996f27ed037ef09c2e6;hp=3efaa97958755b3e7a7bde8dcd6bc89b482e3b70;hpb=4a38142011f7f1c23a408cc9a36af89e6ce336b6;p=deb_shairplay.git diff --git a/src/lib/dnssd.c b/src/lib/dnssd.c index 3efaa97..3f6d9cf 100644 --- a/src/lib/dnssd.c +++ b/src/lib/dnssd.c @@ -102,9 +102,6 @@ struct dnssd_s { TXTRecordGetBytesPtr_t TXTRecordGetBytesPtr; TXTRecordDeallocate_t TXTRecordDeallocate; - char hwaddr[MAX_HWADDR_LEN]; - int hwaddrlen; - DNSServiceRef raopService; DNSServiceRef airplayService; }; @@ -112,15 +109,11 @@ struct dnssd_s { dnssd_t * -dnssd_init(const char *hwaddr, int hwaddrlen, int *error) +dnssd_init(int *error) { dnssd_t *dnssd; if (error) *error = DNSSD_ERROR_NOERROR; - if (hwaddrlen > MAX_HWADDR_LEN) { - if (error) *error = DNSSD_ERROR_HWADDRLEN; - return NULL; - } dnssd = calloc(1, sizeof(dnssd_t)); if (!dnssd) { @@ -161,9 +154,6 @@ dnssd_init(const char *hwaddr, int hwaddrlen, int *error) dnssd->TXTRecordDeallocate = &TXTRecordDeallocate; #endif - memcpy(dnssd->hwaddr, hwaddr, hwaddrlen); - dnssd->hwaddrlen = hwaddrlen; - return dnssd; } @@ -179,13 +169,15 @@ dnssd_destroy(dnssd_t *dnssd) } int -dnssd_register_raop(dnssd_t *dnssd, const char *name, unsigned short port) +dnssd_register_raop(dnssd_t *dnssd, const char *name, unsigned short port, const char *hwaddr, int hwaddrlen) { TXTRecordRef txtRecord; char servname[MAX_SERVNAME]; int ret; assert(dnssd); + assert(name); + assert(hwaddr); dnssd->TXTRecordCreate(&txtRecord, 0, NULL); dnssd->TXTRecordSetValue(&txtRecord, "txtvers", strlen(RAOP_TXTVERS), RAOP_TXTVERS); @@ -205,7 +197,7 @@ dnssd_register_raop(dnssd_t *dnssd, const char *name, unsigned short port) dnssd->TXTRecordSetValue(&txtRecord, "sf", strlen(RAOP_SF), RAOP_SF); /* Convert hardware address to string */ - ret = utils_hwaddr_raop(servname, sizeof(servname), dnssd->hwaddr, dnssd->hwaddrlen); + ret = utils_hwaddr_raop(servname, sizeof(servname), hwaddr, hwaddrlen); if (ret < 0) { /* FIXME: handle better */ return -1; @@ -235,7 +227,7 @@ dnssd_register_raop(dnssd_t *dnssd, const char *name, unsigned short port) } int -dnssd_register_airplay(dnssd_t *dnssd, const char *name, unsigned short port) +dnssd_register_airplay(dnssd_t *dnssd, const char *name, unsigned short port, const char *hwaddr, int hwaddrlen) { TXTRecordRef txtRecord; char deviceid[3*MAX_HWADDR_LEN]; @@ -243,9 +235,11 @@ dnssd_register_airplay(dnssd_t *dnssd, const char *name, unsigned short port) int ret; assert(dnssd); + assert(name); + assert(hwaddr); /* Convert hardware address to string */ - ret = utils_hwaddr_airplay(deviceid, sizeof(deviceid), dnssd->hwaddr, dnssd->hwaddrlen); + ret = utils_hwaddr_airplay(deviceid, sizeof(deviceid), hwaddr, hwaddrlen); if (ret < 0) { /* FIXME: handle better */ return -1;