summaryrefslogtreecommitdiffstats
path: root/src/bp_sim.cpp
diff options
context:
space:
mode:
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);