Whilst I get my branch in order, I thought I'd log a bug I found just now whilst using the UPnpTools/UPnPDeviceSpy project.
It appears as though devices announcing themselves with header 'SERVER' and a version string that contains multiple components separated with whitespace get junked.
e.g. Serviio 0.5.2 announces itself with the following header...
SERVER: Windows 2003, UPnP/1.0 DLNADOC/1.50, Serviio/0.5.2
When parsed, the UPnP implementation extracts what should be the UPnP version string...
"UPnP/1.0 DLNADOC/1.50"
However, the string contains extra information, which confuses the parser and the implementation classes the device as a bad device.
According to the UPNP architecture document this assumption is in fact fine, however, DLNA spec Requirement 7.4.17.1-3 slightly relaxes the rules and requires that the DLNADOC/1.50 be added to the header as described above.
Code for this is Source\Core\UPnP\Infrastructure\Common\UPnPVersion.cs.
My fix was to add
foreach (var item in versionStr.Split(' '))
It appears as though devices announcing themselves with header 'SERVER' and a version string that contains multiple components separated with whitespace get junked.
e.g. Serviio 0.5.2 announces itself with the following header...
SERVER: Windows 2003, UPnP/1.0 DLNADOC/1.50, Serviio/0.5.2
When parsed, the UPnP implementation extracts what should be the UPnP version string...
"UPnP/1.0 DLNADOC/1.50"
However, the string contains extra information, which confuses the parser and the implementation classes the device as a bad device.
According to the UPNP architecture document this assumption is in fact fine, however, DLNA spec Requirement 7.4.17.1-3 slightly relaxes the rules and requires that the DLNADOC/1.50 be added to the header as described above.
Code for this is Source\Core\UPnP\Infrastructure\Common\UPnPVersion.cs.
My fix was to add
foreach (var item in versionStr.Split(' '))