From 6b1e148824d6b64230d6b41868a890c1a86ef3e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 5 Aug 2010 13:27:31 +0000 Subject: [PATCH] * Only actually call change_address() of the net_datalink_protocols if the address actually changed. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37928 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/network/stack/interfaces.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/add-ons/kernel/network/stack/interfaces.cpp b/src/add-ons/kernel/network/stack/interfaces.cpp index 0a5d22caa2..2dace5bf47 100644 --- a/src/add-ons/kernel/network/stack/interfaces.cpp +++ b/src/add-ons/kernel/network/stack/interfaces.cpp @@ -969,6 +969,13 @@ Interface::_ChangeAddress(RecursiveLocker& locker, InterfaceAddress* address, originalAddress) != B_OK) oldAddress.ss_family = AF_UNSPEC; + // Test if anything changed for real + if (!address->domain->address_module->equal_addresses(originalAddress, + newAddress)) { + // Nothing to do + return B_OK; + } + // TODO: mark this address busy or call while holding the lock! address->AcquireReference(); locker.Unlock();