PUD: call getTxMcAddr when needed, do not store
authorFerry Huberts <f.huberts@mindef.nl>
Wed, 26 Oct 2011 09:07:11 +0000 (11:07 +0200)
committerFerry Huberts <ferry.huberts@pelagic.nl>
Tue, 14 Feb 2012 13:32:55 +0000 (14:32 +0100)
Signed-off-by: Ferry Huberts <f.huberts@mindef.nl>
lib/pud/src/pud.c

index 77d7c9d..5f4514c 100644 (file)
@@ -29,9 +29,6 @@
  * transmission over OSLR */
 #define BUFFER_SIZE_TX_OLSR    512
 
-/** The transmit socket address */
-static union olsr_sockaddr * txAddress;
-
 /** The de-duplication list */
 static DeDupList deDupList;
 
@@ -87,6 +84,7 @@ void pudError(bool useErrno, const char *format, ...) {
  */
 static void sendToAllTxInterfaces(unsigned char *buffer,
                unsigned int bufferLength) {
+       union olsr_sockaddr * txAddress;
        TRxTxNetworkInterface *txNetworkInterfaces = getTxNetworkInterfaces();
        while (txNetworkInterfaces != NULL) {
                TRxTxNetworkInterface *networkInterface = txNetworkInterfaces;
@@ -98,6 +96,7 @@ static void sendToAllTxInterfaces(unsigned char *buffer,
 #endif
 
                errno = 0;
+               txAddress = getTxMcAddr();
                if (sendto(networkInterface->socketFd, buffer, bufferLength, 0,
                                (struct sockaddr *) &txAddress->in, sizeof(txAddress->in)) < 0) {
                        pudError(true, "Transmit error on interface %s",
@@ -410,9 +409,6 @@ bool initPud(void) {
 
        initDeDupList(&deDupList, getDeDupDepth());
 
-       /* set global transmit socket config */
-       txAddress = getTxMcAddr();
-
        if (!startReceiver()) {
                pudError(false, "Could not start receiver");
                goto error;