diff --git a/src/TinyGsmClientXBee.h b/src/TinyGsmClientXBee.h index f89c32d..11251b1 100644 --- a/src/TinyGsmClientXBee.h +++ b/src/TinyGsmClientXBee.h @@ -263,6 +263,7 @@ public: resetPin = -1; savedIP = IPAddress(0,0,0,0); savedHost = ""; + savedHostIP = IPAddress(0,0,0,0); inCommandMode = false; memset(sockets, 0, sizeof(sockets)); } @@ -275,6 +276,7 @@ public: this->resetPin = resetPin; savedIP = IPAddress(0,0,0,0); savedHost = ""; + savedHostIP = IPAddress(0,0,0,0); inCommandMode = false; memset(sockets, 0, sizeof(sockets)); } @@ -845,16 +847,20 @@ protected: bool retVal = false; XBEE_COMMAND_START_DECORATOR(5, false) - // If it's a new host or we dont' have a good IP, we need to do a DNS - // search for the IP to connect to - if (this->savedHost != String(host) || savedIP == IPAddress(0,0,0,0)) { + // If this is a new host name, replace the saved host and wipe out the saved host IP + if (this->savedHost != String(host)) { this->savedHost = String(host); - savedIP = getHostIP(host, timeout_s); // This will return 0.0.0.0 if lookup fails + savedHostIP = IPAddress(0,0,0,0); + } + + // If we don't have a good IP for the host, we need to do a DNS search + if (savedHostIP == IPAddress(0,0,0,0)) { + savedHostIP = getHostIP(host, timeout_s); // This will return 0.0.0.0 if lookup fails } // If we now have a valid IP address, use it to connect - if (savedIP != IPAddress(0,0,0,0)) { // Only re-set connection information if we have an IP address - retVal = modemConnect(savedIP, port, mux, ssl, timeout_ms - (millis() - startMillis)); + if (savedHostIP != IPAddress(0,0,0,0)) { // Only re-set connection information if we have an IP address + retVal = modemConnect(savedHostIP, port, mux, ssl, timeout_ms - (millis() - startMillis)); } XBEE_COMMAND_END_DECORATOR @@ -1147,7 +1153,7 @@ finish: } bool gotIPforSavedHost() { - if (savedHost != "" && savedIP != IPAddress(0,0,0,0)) return true; + if (savedHost != "" && savedHostIP != IPAddress(0,0,0,0)) return true; else return false; } @@ -1160,6 +1166,7 @@ protected: XBeeType beeType; IPAddress savedIP; String savedHost; + IPAddress savedHostIP; bool inCommandMode; uint32_t lastCommandModeMillis; GsmClient* sockets[TINY_GSM_MUX_COUNT];