ssdp: improve debug logging
This commit is contained in:
parent
5cddc8fb4d
commit
993a4adbbc
35
minissdp.c
35
minissdp.c
@ -240,7 +240,9 @@ SendSSDPResponse(int s, struct sockaddr_in sockname, int st_no,
|
|||||||
(st_no > 0 ? known_service_types[st_no] : ""),
|
(st_no > 0 ? known_service_types[st_no] : ""),
|
||||||
(st_no > 1 ? "1" : ""),
|
(st_no > 1 ? "1" : ""),
|
||||||
host, (unsigned int)port);
|
host, (unsigned int)port);
|
||||||
//DEBUG DPRINTF(E_DEBUG, L_SSDP, "Sending M-SEARCH response:\n%s", buf);
|
DPRINTF(E_DEBUG, L_SSDP, "Sending M-SEARCH response to %s:%d ST: %s\n",
|
||||||
|
inet_ntoa(sockname.sin_addr), ntohs(sockname.sin_port),
|
||||||
|
known_service_types[st_no]);
|
||||||
n = sendto(s, buf, l, 0,
|
n = sendto(s, buf, l, 0,
|
||||||
(struct sockaddr *)&sockname, sizeof(struct sockaddr_in) );
|
(struct sockaddr *)&sockname, sizeof(struct sockaddr_in) );
|
||||||
if (n < 0)
|
if (n < 0)
|
||||||
@ -620,14 +622,14 @@ ProcessSSDPRequest(int s, unsigned short port)
|
|||||||
else if (st && (st_len > 0))
|
else if (st && (st_len > 0))
|
||||||
{
|
{
|
||||||
int l;
|
int l;
|
||||||
int lan_addr_index = 0;
|
int iface = 0;
|
||||||
/* find in which sub network the client is */
|
/* find in which sub network the client is */
|
||||||
for (i = 0; i < n_lan_addr; i++)
|
for (i = 0; i < n_lan_addr; i++)
|
||||||
{
|
{
|
||||||
if((sendername.sin_addr.s_addr & lan_addr[i].mask.s_addr) ==
|
if((sendername.sin_addr.s_addr & lan_addr[i].mask.s_addr) ==
|
||||||
(lan_addr[i].addr.s_addr & lan_addr[i].mask.s_addr))
|
(lan_addr[i].addr.s_addr & lan_addr[i].mask.s_addr))
|
||||||
{
|
{
|
||||||
lan_addr_index = i;
|
iface = i;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -645,31 +647,34 @@ ProcessSSDPRequest(int s, unsigned short port)
|
|||||||
for (i = 0; known_service_types[i]; i++)
|
for (i = 0; known_service_types[i]; i++)
|
||||||
{
|
{
|
||||||
l = strlen(known_service_types[i]);
|
l = strlen(known_service_types[i]);
|
||||||
if ((l <= st_len) && (memcmp(st, known_service_types[i], l) == 0))
|
if ((l > st_len) || (memcmp(st, known_service_types[i], l) != 0))
|
||||||
{
|
continue;
|
||||||
if (st_len != l)
|
if (st_len != l)
|
||||||
{
|
{
|
||||||
/* Check version number - must always be 1 currently. */
|
/* Check version number - we only support 1. */
|
||||||
if ((st[l-1] == ':') && (st[l] == '1'))
|
if ((st[l-1] == ':') && (st[l] == '1'))
|
||||||
l++;
|
l++;
|
||||||
while (l < st_len)
|
while (l < st_len)
|
||||||
{
|
{
|
||||||
if (!isspace(st[l]))
|
if (isdigit(st[l]))
|
||||||
{
|
|
||||||
DPRINTF(E_DEBUG, L_SSDP, "Ignoring SSDP M-SEARCH with bad extra data [%s]\n",
|
|
||||||
inet_ntoa(sendername.sin_addr));
|
|
||||||
break;
|
break;
|
||||||
}
|
if (isspace(st[l]))
|
||||||
|
{
|
||||||
l++;
|
l++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
DPRINTF(E_MAXDEBUG, L_SSDP,
|
||||||
|
"Ignoring SSDP M-SEARCH with bad extra data '%c' [%s]\n",
|
||||||
|
st[l], inet_ntoa(sendername.sin_addr));
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if (l != st_len)
|
if (l != st_len)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
_usleep(random()>>20);
|
_usleep(random()>>20);
|
||||||
SendSSDPResponse(s, sendername, i,
|
SendSSDPResponse(s, sendername, i,
|
||||||
lan_addr[lan_addr_index].str, port);
|
lan_addr[iface].str, port);
|
||||||
break;
|
return;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
/* Responds to request with ST: ssdp:all */
|
/* Responds to request with ST: ssdp:all */
|
||||||
/* strlen("ssdp:all") == 8 */
|
/* strlen("ssdp:all") == 8 */
|
||||||
@ -679,7 +684,7 @@ ProcessSSDPRequest(int s, unsigned short port)
|
|||||||
{
|
{
|
||||||
l = strlen(known_service_types[i]);
|
l = strlen(known_service_types[i]);
|
||||||
SendSSDPResponse(s, sendername, i,
|
SendSSDPResponse(s, sendername, i,
|
||||||
lan_addr[lan_addr_index].str, port);
|
lan_addr[iface].str, port);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user