summaryrefslogtreecommitdiffstats
path: root/src/bp_sim.cpp
diff options
context:
space:
mode:
authorimarom <imarom@cisco.com>2016-05-08 10:57:57 +0300
committerimarom <imarom@cisco.com>2016-05-09 16:48:15 +0300
commit75ce59e5652f9094beab854d263a850cfc81a3de (patch)
tree10e7216b433aaae1888850a59f48e9c1df84af65 /src/bp_sim.cpp
parent8691f4019dc2123c1aa7413cf3666138756c2f66 (diff)
PCAP refinement
Diffstat (limited to 'src/bp_sim.cpp')
-rwxr-xr-xsrc/bp_sim.cpp15
1 files changed, 6 insertions, 9 deletions
diff --git a/src/bp_sim.cpp b/src/bp_sim.cpp
index 2491d122..18b1053e 100755
--- a/src/bp_sim.cpp
+++ b/src/bp_sim.cpp
@@ -3713,17 +3713,14 @@ int CNodeGenerator::flush_file(dsec_t max_time,
m_p_queue.pop();
CGenNodePCAP *node_pcap = (CGenNodePCAP *)node;
- node_pcap->handle(thread);
-
- if (node_pcap->has_next()) {
- node_pcap->next();
- node_pcap->m_time += node_pcap->get_ipg();
- m_p_queue.push(node);
- } else {
- thread->free_node(node);
- thread->m_stateless_dp_info.stop_traffic(node_pcap->get_port_id(), false, 0);
+ /* might have been marked for free */
+ if ( unlikely( node_pcap->is_marked_for_free() ) ) {
+ thread->free_node(node);
+ } else {
+ node_pcap->handle(thread);
}
+
} else {
bool exit_sccheduler = handle_slow_messages(type,node,thread,always);