Suddenly can only get relay connection (server problem?)

I guess this will be my last post unless I can get some answers.  I found out that it’s possible to log the drive’s connection to wd2go.com (the /usr/orion/communicationmanager/communicationmanagerd has a logtofile parameter).  I noticed two things when I stopped the communication manager and re-ran it with logging enabled.

  1. When starting commnucationmanager reports two errors (don’t know if they are important or not, but they could explain issue #2):

getaddrinfo() error : Name or service not known
getaddrinfo() error : Name or service not known

  1. The command that communicationmanager is using to test to see if port forwarding works is missing the WAN ip address is the command:

https://www.wd2go.com/api/1.0/rest/device_communication/######?format=xml&external_ip=&external_port=PORT&protocol=HTTP&device_auth=#######   (first number is device id and second is the authorization, PORT is the 80 port).

If you notice the command doesn’t say what external_ip to actual talk to.  That’s very odd because the log file has the external ip address listed in it.  Anyway using the command above results in a 400 HTTP error with a description of " The request sent by the client was syntactically incorrect ()."

I wonder what happens if I actually put the correct external ip address in the command?  Let’s see:

<device_communication>Success<req_device_id>####</req_device_id><resp_device_id>#####</resp_device_id><external_ip>#######</external_ip><remote_external_ip>null</remote_external_ip></device_communication>

Well what do you know it worked!   So basically the problem is that the drive is not sending the external ip address along with the request to check if port forwarding is working.

That seems like a bug in the /usr/orion/communicationmanager/communicationmanager program or something that’s editing the configuration file (dynamicconfig.ini).

What I can’t figure out is how to get the drive to actually send my external ip address in the request.  Any idea on how to fix this?

Edit:

As a work around I pretty much stopped remote access, then started it and quickly stopped the communicationmanager program before it opened a relay connection.  I then manually ran through the steps that the program would do, putting in my external_ip address.  That worked and now I’ve got a “direct” connection and port forwarding works remotely.

The problem with this set up is that since the communicationmanager program isn’t running, any changes to my external ip won’t get picked up and obvioulsy if the drive reboots that won’t get picked up either.  Also there’s likely some kind of server time out which will kick in at some point and remove the dynamic address and  mapping.  So it’s really a poor substute at best.

I need to figure out what changed since when I originally set up port forwarding (in this version of the firmware) it worked.  Now it’s not sending the external_ip address which prevents direct connection from working if communicationmanager program is running.