diff options
Diffstat (limited to 'shaping/src/shaper_session.cpp')
| -rw-r--r-- | shaping/src/shaper_session.cpp | 7 |
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); |
