summaryrefslogtreecommitdiff
path: root/shaping/src/shaper_session.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'shaping/src/shaper_session.cpp')
-rw-r--r--shaping/src/shaper_session.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/shaping/src/shaper_session.cpp b/shaping/src/shaper_session.cpp
index 685b41a..946a56f 100644
--- a/shaping/src/shaper_session.cpp
+++ b/shaping/src/shaper_session.cpp
@@ -177,7 +177,12 @@ struct shaping_flow* shaper_session_close(struct shaping_thread_ctx *ctx, struct
}
sf = (struct shaping_flow *)session_node->val_data;
- sf->flag |= SESSION_CLOSE;
+
+ if (shaper_queue_empty(sf)) {
+ shaping_flow_free(ctx, sf);
+ } else {
+ sf->flag |= SESSION_CLOSE;
+ }
shaper_global_stat_ctrlpkt_active_close_inc(ctx->global_stat);