NETGEAR is aware of a growing number of phone and online scams. To learn how to stay safe click here.
Forum Discussion
EasyG0ing1
Jun 26, 2022Aspirant
XR1000 Not responding appropriately to SSDP Service Request Packets
Hello, I've been working on a Java program that relies on UPnP. And during my testing of the service using my XR1000 router, I noticed that the router almost never responds to standard SSDP broadcast...
Netduma-Liam
Jun 27, 2022NetDuma Partner
Thanks for letting us know, I suspect that this would be a problem with the firmware(s) itself rather than just your unit specifically. I'll look into it further and see how we can test this internally.
This wouldn't be an issue with DumaOS but rather NETGEAR's network settings, but we can still make them aware of it if we're able to reproduce it.
- EasyG0ing1Jul 17, 2022Aspirant
You know ... I can't explain this, but it remains frustrating nonetheless...
I was re-working the test program that I use to send out the SSDP packet to record the responses from the router. I basically took out the SQL portion of it and added the ability to configure some options from the command line etc. I tested it and it was still giving me the same behavior where it would not respond to the SSDP packet until I had sent several of them (timed at 5 seconds apart) and the amount that I had to send before getting a response was never a consistent number, but I wanted to give you the source code that I wrote in Java as well as a compiled self running .EXE file that you could use to check the problem with your own hardware.
Once I had the code re-configured, copied it to my Windows virtual machine to compile it into a windows EXE, but first I tested it from the IntelliJ IDE and it kept throwing an error when on the line of code that binds UDP to the NIC. So I went back into my Mac environment to look at the code and there was one line that I changed. I took this line:
socket = new DatagramSocket(new InetSocketAddress(port));
And I decided to break out the inside of the parentheses so I could see if the issue was related to the instantiation of the DatagramSocket or the creation of the InetSocketAddress object... so when I was done, the code looked like this:
InetSocketAddress address = new InetSocketAddress(port);
socket = new DatagramSocket(address);Then I ran the code to test it, and I'll be damned if I was not now getting one response for every packet that I sent out. Of course there was no reason why that would happen simply from the change I made since the process of instantiating a class outside of the next line or doing it inside the passing of the argument - makes no difference to a compiler, the compiled code ends up looking the same, but breaking it out like I did provides me with one more line of troubleshooting so I can know which step it choked on...
So I decided to put the code back the way it was when it wasn't getting the expected responses from the router, and I did this using IntelliJ's code history feature where I simply restored the code to a point in time that was about 20 minutes into the past.
I ran the code... and I got one response for every packet I sent out.
Which means that even though I reverted the code back to the exact same code that I used which produced results that indicated the problem ... that code was now seeing one packet received for every SSDP packet sent out.
Which means the router is NOW working as it should.
And in the interest of being thorough, I power cycled the router, but when it botted back up, it booted up into a factory new config (no idea why, but these things can happen sometimes), so I went through the setup wizard and re-configured the router the way I had it, but it is still responding to the SSDP packets on a one for one basis which means everything is fine now.
And I cannot explain why. But ... as the saying goes ... don't look a gift horse in the mouth.
☺
Mike
- Netduma-FraserJul 17, 2022NetDuma PartnerThanks a lot for the detailed information you've provided, I'll pass it onto our team to see if it's something we need to look at and if not we'll pass it onto NG directly.