It's my first time dealing with SSDP and httpmu (http over udp multicast), so i have been reading the ill-defined spec from 1999-2000 as well as UPnP forum doco. I wrote some test code and i notice some things that make me wonder if the SSDP of Roku player is acting strange. In particular:
- It does not honor search for all ("ST: ssdp:all"). By the book, besides responding to its own designation ("roku:ecp" in our case), all devices should respond to "ssdp:all" as if it was their service name, this being some way of getting all of ones SSDP ducks in a row
- When search for "roku:ecp" is multicast, it unicast responds with "ST: roku:ecp" with the player serial number in USN, which is swell. But right after that it sends a second package for "ST: upnp:rootdevice"... WTH?! Mind you, it is not NOTIFY message, it is "200 OK" response, answering a question nobody asked.
- It does not seem to honor "MX:" header at all (maximum response delay - the device is supposed to delay randomly between 0 and mx seconds to avoid congestion). Even more, the UPnP specifies that queries without MX header should be ignored silently (my router does that if no MX sent, Roku doesn't). I am mentioning this for completenes, I (too?) think the SSDP spec on MX is silly.
None of those seem fatal to me; (2) is annoying and (1) will likely be issue for UPnP enumerator programs