OSDN Git Service

#29144 でclose messageをpostするまえに、message queueをclearしておく。
authorHiroaki Nakano <nakano.hiroaki@nttcom.co.jp>
Fri, 31 Aug 2012 06:20:48 +0000 (15:20 +0900)
committerHiroaki Nakano <nakano.hiroaki@nttcom.co.jp>
Fri, 31 Aug 2012 06:20:48 +0000 (15:20 +0900)
Signed-off-by: Hiroaki Nakano <nakano.hiroaki@nttcom.co.jp>
l7vsd/src/tcp_session.cpp

index c0e5a28..6e1e907 100644 (file)
@@ -897,11 +897,20 @@ void tcp_session::up_thread_run()
 
         if (ssl_flag) {
                 client_ssl_socket.wait_async_event_all_end();
+
+                // clear messages
+
+                tcp_thread_message *msg = up_thread_message_que.pop();
+                while (msg) {
+                        delete msg;
+                        msg = up_thread_message_que.pop();
+                }
+
                 upthread_status = UPTHREAD_LOCK;
                 parent_dispatcher.post(boost::bind(&tcp_session::up_thread_client_ssl_socket_clear_socket_handler,this));
                 boost::mutex::scoped_lock lock(upthread_status_mutex);
                 while (unlikely(upthread_status == UPTHREAD_LOCK)) {
-                        tcp_thread_message *msg = up_thread_message_que.pop();
+                        msg = up_thread_message_que.pop();
                         if (msg) {      // message is alive.
                                 msg->message(MESSAGE_PROC);
                                 delete msg;