]> git.stg.codes - stg.git/commitdiff
Исправлена проблема копирования итераторов при выполнении swap на
authorMaxim Mamontov <faust@gts.dp.ua>
Mon, 6 Dec 2010 16:02:26 +0000 (18:02 +0200)
committerMaxim Mamontov <faust@gts.dp.ua>
Mon, 6 Dec 2010 16:02:26 +0000 (18:02 +0200)
индексе пакетов по IP-адресам

projects/stargazer/traffcounter.cpp

index 5401416773d7a76b95781c7f77f04294726a4110..e834b81fb9be562607d38d7a1d87698c24f72799 100644 (file)
@@ -287,7 +287,7 @@ int oldIp2packetsSize = ip2packets.size();
 pp_iter pi;
 pi = packets.begin();
 std::map<RAW_PACKET, PACKET_EXTRA_DATA> newPackets;
 pp_iter pi;
 pi = packets.begin();
 std::map<RAW_PACKET, PACKET_EXTRA_DATA> newPackets;
-std::multimap<uint32_t, pp_iter> newIP2Packets;
+ip2packets.erase(ip2packets.begin(), ip2packets.end());
 while (pi != packets.end())
     {
     //Flushing
 while (pi != packets.end())
     {
     //Flushing
@@ -388,14 +388,13 @@ while (pi != packets.end())
         pair<pp_iter, bool> res = newPackets.insert(*pi);
         if (res.second)
             {
         pair<pp_iter, bool> res = newPackets.insert(*pi);
         if (res.second)
             {
-            newIP2Packets.insert(make_pair(pi->first.GetSrcIP(), res.first));
-            newIP2Packets.insert(make_pair(pi->first.GetDstIP(), res.first));
+            ip2packets.insert(make_pair(pi->first.GetSrcIP(), res.first));
+            ip2packets.insert(make_pair(pi->first.GetDstIP(), res.first));
             }
         }
     ++pi;
     }
 swap(packets, newPackets);
             }
         }
     ++pi;
     }
 swap(packets, newPackets);
-swap(ip2packets, newIP2Packets);
 printfd(__FILE__, "FlushAndRemove() packets: %d(rem %d) ip2packets: %d(rem %d)\n",
         packets.size(),
         oldPacketsSize - packets.size(),
 printfd(__FILE__, "FlushAndRemove() packets: %d(rem %d) ip2packets: %d(rem %d)\n",
         packets.size(),
         oldPacketsSize - packets.size(),