src/devices/mesh/dot11s/hwmp-protocol.cc
changeset 4978 b73c15d25e81
parent 4972 40d3596d7d60
child 4980 fd4011901681
--- a/src/devices/mesh/dot11s/hwmp-protocol.cc	Wed Apr 22 21:40:06 2009 +0400
+++ b/src/devices/mesh/dot11s/hwmp-protocol.cc	Mon Apr 27 23:31:54 2009 +0400
@@ -361,7 +361,6 @@
         }
       if ((*i)->GetDestinationAddress () == GetAddress ())
         {
-          preq.DelDestinationAddressElement ((*i)->GetDestinationAddress());
           SendPrep (
               GetAddress (),
               preq.GetOriginatorAddress (),
@@ -372,29 +371,31 @@
               preq.GetLifetime (),
               interface
           );
+          preq.DelDestinationAddressElement ((*i)->GetDestinationAddress());
           continue;
         }
       //check if can answer:
       HwmpRtable::LookupResult result = m_rtable->LookupReactive ((*i)->GetDestinationAddress());
+      NS_LOG_UNCOND("Lookup:"<<(*i)->GetDestinationAddress()<<"I am "<<GetAddress ()<<", RA = "<<result.retransmitter);
       if ((! ((*i)->IsDo())) && (result.retransmitter != Mac48Address::GetBroadcast()))
         {
-          //have a valid information and acn answer
+          //have a valid information and can answer
+          SendPrep (
+              (*i)->GetDestinationAddress (),
+              preq.GetOriginatorAddress (),
+              from,
+              result.metric,
+              preq.GetOriginatorSeqNumber (),
+              result.seqnum +1,
+              preq.GetLifetime (),
+              interface
+              );
+
           if ((*i)->IsRf ())
-            (*i)->SetFlags (true, false, (*i)->IsUsn ()); //DO = 1, RF = 0 (as it was)
+            (*i)->SetFlags (true, false, (*i)->IsUsn ()); //DO = 1, RF = 0
           else
             {
-              //send a PREP and delete destination
               preq.DelDestinationAddressElement ((*i)->GetDestinationAddress());
-              SendPrep (
-                  (*i)->GetDestinationAddress (),
-                  preq.GetOriginatorAddress (),
-                  from,
-                  result.metric,
-                  preq.GetOriginatorSeqNumber (),
-                  result.seqnum +1,
-                  preq.GetLifetime (),
-                  interface
-              );
               continue;
             }
         }