tivo: clean up some error checking
This commit is contained in:
parent
08c21f39d1
commit
27a29f9e92
@ -109,18 +109,21 @@ getBcastAddress(void)
|
|||||||
uint32_t ret = INADDR_BROADCAST;
|
uint32_t ret = INADDR_BROADCAST;
|
||||||
|
|
||||||
s = socket(PF_INET, SOCK_STREAM, 0);
|
s = socket(PF_INET, SOCK_STREAM, 0);
|
||||||
|
if (!s)
|
||||||
|
return ret;
|
||||||
memset(&ifc, '\0', sizeof(ifc));
|
memset(&ifc, '\0', sizeof(ifc));
|
||||||
ifc.ifc_len = sizeof(ifr);
|
ifc.ifc_len = sizeof(ifr);
|
||||||
ifc.ifc_req = ifr;
|
ifc.ifc_req = ifr;
|
||||||
|
|
||||||
if(ioctl(s, SIOCGIFCONF, &ifc) < 0) {
|
if (ioctl(s, SIOCGIFCONF, &ifc) < 0)
|
||||||
|
{
|
||||||
DPRINTF(E_ERROR, L_TIVO, "Error getting interface list [%s]\n", strerror(errno));
|
DPRINTF(E_ERROR, L_TIVO, "Error getting interface list [%s]\n", strerror(errno));
|
||||||
close(s);
|
close(s);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
count = ifc.ifc_len / sizeof(struct ifreq);
|
count = ifc.ifc_len / sizeof(struct ifreq);
|
||||||
for(i = 0; i < count; i++)
|
for (i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
memcpy(&addr, &ifr[i].ifr_addr, sizeof(addr));
|
memcpy(&addr, &ifr[i].ifr_addr, sizeof(addr));
|
||||||
if(strcmp(inet_ntoa(addr.sin_addr), lan_addr[0].str) == 0)
|
if(strcmp(inet_ntoa(addr.sin_addr), lan_addr[0].str) == 0)
|
||||||
@ -149,21 +152,22 @@ getBcastAddress(void)
|
|||||||
void
|
void
|
||||||
sendBeaconMessage(int fd, struct sockaddr_in * client, int len, int broadcast)
|
sendBeaconMessage(int fd, struct sockaddr_in * client, int len, int broadcast)
|
||||||
{
|
{
|
||||||
char * mesg;
|
char msg[512];
|
||||||
int mesg_len;
|
int msg_len;
|
||||||
|
|
||||||
mesg_len = asprintf(&mesg, "TiVoConnect=1\n"
|
msg_len = snprintf(msg, sizeof(msg), "TiVoConnect=1\n"
|
||||||
"swversion=1.0\n"
|
"swversion=1.0\n"
|
||||||
"method=%s\n"
|
"method=%s\n"
|
||||||
"identity=%s\n"
|
"identity=%s\n"
|
||||||
"machine=%s\n"
|
"machine=%s\n"
|
||||||
"platform=pc/minidlna\n"
|
"platform=pc/minidlna\n"
|
||||||
"services=TiVoMediaServer:%d/http\n",
|
"services=TiVoMediaServer:%d/http\n",
|
||||||
broadcast ? "broadcast" : "connected",
|
broadcast ? "broadcast" : "connected",
|
||||||
uuidvalue, friendly_name, runtime_vars.port);
|
uuidvalue, friendly_name, runtime_vars.port);
|
||||||
|
if (msg_len < 0)
|
||||||
|
return;
|
||||||
DPRINTF(E_DEBUG, L_TIVO, "Sending TiVo beacon to %s\n", inet_ntoa(client->sin_addr));
|
DPRINTF(E_DEBUG, L_TIVO, "Sending TiVo beacon to %s\n", inet_ntoa(client->sin_addr));
|
||||||
sendto(fd, mesg, mesg_len, 0, (struct sockaddr*)client, len);
|
sendto(fd, msg, msg_len, 0, (struct sockaddr*)client, len);
|
||||||
free(mesg);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -153,7 +153,7 @@ is_tivo_file(const char *path)
|
|||||||
|
|
||||||
/* read file header */
|
/* read file header */
|
||||||
fd = open(path, O_RDONLY);
|
fd = open(path, O_RDONLY);
|
||||||
if( !fd )
|
if( fd < 0 )
|
||||||
return 0;
|
return 0;
|
||||||
if( read(fd, buf, 5) < 5 )
|
if( read(fd, buf, 5) < 5 )
|
||||||
buf[0] = 'X';
|
buf[0] = 'X';
|
||||||
|
Loading…
x
Reference in New Issue
Block a user