pud: fix readIPAddress function
[olsrd.git] / lib / pud / src / configTools.c
index 4a957d8..cb53b4e 100644 (file)
@@ -263,6 +263,7 @@ bool readULL(const char * parameterName, const char * str, unsigned long long *
                union olsr_sockaddr * dst, bool * dstSet) {
        union olsr_sockaddr ip;
        int conversion;
+       in_port_t port;
 
        assert(parameterName != NULL);
        assert(str != NULL);
@@ -288,10 +289,14 @@ bool readULL(const char * parameterName, const char * str, unsigned long long *
        }
 
        if (!*dstSet) {
-               setOlsrSockaddrPort(&ip, htons(portDefault));
+         port = htons(portDefault);
+       } else {
+         port = getOlsrSockaddrPort(dst, portDefault);
        }
 
-  setOlsrSockaddrAddr(dst, &ip);
+       dst->in.sa_family = ip.in.sa_family;
+       setOlsrSockaddrPort(dst, port);
+       setOlsrSockaddrAddr(dst, &ip);
        *dstSet = true;
        return true;
 }