X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2Fdnssd.m;h=37ba32f30408e5f88fb3fd69984204214c507558;hb=e4169f77f892fefc66a97439d295d3e09ef3e2f0;hp=ef69178707817830f58508cce1218df499a448dc;hpb=23e7e3ae2b2adfa49635495c0950b76e17987c93;p=deb_shairplay.git diff --git a/src/lib/dnssd.m b/src/lib/dnssd.m index ef69178..37ba32f 100644 --- a/src/lib/dnssd.m +++ b/src/lib/dnssd.m @@ -24,32 +24,22 @@ #define MAX_SERVNAME 256 struct dnssd_s { - char hwaddr[MAX_HWADDR_LEN]; - int hwaddrlen; - NSNetService *raopService; NSNetService *airplayService; }; 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) { if (error) *error = DNSSD_ERROR_OUTOFMEM; return NULL; } - memcpy(dnssd->hwaddr, hwaddr, hwaddrlen); - dnssd->hwaddrlen = hwaddrlen; - return dnssd; } @@ -60,7 +50,7 @@ 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, int password) { char hwaddrstr[MAX_SERVNAME]; NSString *serviceString; @@ -75,7 +65,7 @@ dnssd_register_raop(dnssd_t *dnssd, const char *name, unsigned short port) } /* Convert the hardware address to string */ - ret = utils_hwaddr_raop(hwaddrstr, sizeof(hwaddrstr), dnssd->hwaddr, dnssd->hwaddrlen); + ret = utils_hwaddr_raop(hwaddrstr, sizeof(hwaddrstr), hwaddr, hwaddrlen); if (ret < 0) { return -2; } @@ -90,7 +80,11 @@ dnssd_register_raop(dnssd_t *dnssd, const char *name, unsigned short port) [txtDict setValue:[NSString stringWithUTF8String:RAOP_DA] forKey:@"da"]; [txtDict setValue:[NSString stringWithUTF8String:RAOP_SR] forKey:@"sr"]; [txtDict setValue:[NSString stringWithUTF8String:RAOP_SS] forKey:@"ss"]; - [txtDict setValue:[NSString stringWithUTF8String:RAOP_PW] forKey:@"pw"]; + if (password) { + [txtDict setValue:@"true" forKey:@"pw"]; + } else { + [txtDict setValue:@"false" forKey:@"pw"]; + } [txtDict setValue:[NSString stringWithUTF8String:RAOP_VN] forKey:@"vn"]; [txtDict setValue:[NSString stringWithUTF8String:RAOP_TP] forKey:@"tp"]; [txtDict setValue:[NSString stringWithUTF8String:RAOP_MD] forKey:@"md"]; @@ -110,7 +104,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) { NSMutableDictionary *txtDict; NSData *txtData; @@ -125,7 +119,7 @@ dnssd_register_airplay(dnssd_t *dnssd, const char *name, unsigned short port) } /* 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) { return -2; }