This is an automated email from the ASF dual-hosted git repository.

kgiusti pushed a commit to branch 1.16.x
in repository https://gitbox.apache.org/repos/asf/qpid-dispatch.git


The following commit(s) were added to refs/heads/1.16.x by this push:
     new e30fffe  DISPATCH-2098 - Stop HTTP server before the AMQP server 
(#1182)
e30fffe is described below

commit e30fffeee3834bb2d8c48c339f45020f1ff613e1
Author: Jiri DanÄ›k <[email protected]>
AuthorDate: Tue May 4 17:47:09 2021 +0200

    DISPATCH-2098 - Stop HTTP server before the AMQP server (#1182)
    
    (cherry picked from commit fb3ebad74cb78e33e8dd6dd26e3edba7aadf5973)
---
 src/dispatch.c       | 4 ++++
 src/server.c         | 5 +++--
 src/server_private.h | 2 ++
 3 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/dispatch.c b/src/dispatch.c
index 67b7cad..ddb3eb5 100644
--- a/src/dispatch.c
+++ b/src/dispatch.c
@@ -363,6 +363,10 @@ static void qd_dispatch_set_router_area(qd_dispatch_t *qd, 
char *_area) {
 void qd_dispatch_free(qd_dispatch_t *qd)
 {
     if (!qd) return;
+
+    /* Stop HTTP threads immediately */
+    qd_http_server_free(qd_server_http(qd->server));
+
     free(qd->sasl_config_path);
     free(qd->sasl_config_name);
     qd_connection_manager_free(qd->connection_manager);
diff --git a/src/server.c b/src/server.c
index b407374..d3408a0 100644
--- a/src/server.c
+++ b/src/server.c
@@ -1366,13 +1366,14 @@ qd_server_t *qd_server(qd_dispatch_t *qd, int 
thread_count, const char *containe
     return qd_server;
 }
 
+qd_http_server_t *qd_server_http(qd_server_t *qd_server) {
+    return qd_server->http;
+}
 
 void qd_server_free(qd_server_t *qd_server)
 {
     if (!qd_server) return;
 
-    qd_http_server_free(qd_server->http);
-
     qd_connection_t *ctx = DEQ_HEAD(qd_server->conn_list);
     while (ctx) {
         qd_log(qd_server->log_source, QD_LOG_INFO,
diff --git a/src/server_private.h b/src/server_private.h
index 2f374ec..6079585 100644
--- a/src/server_private.h
+++ b/src/server_private.h
@@ -92,6 +92,8 @@ DEQ_DECLARE(qd_pn_free_link_session_t, 
qd_pn_free_link_session_list_t);
 
 pn_proactor_t* qd_server_proactor(qd_server_t *s);
 
+qd_http_server_t *qd_server_http(qd_server_t *server);
+
 typedef void (*qd_server_event_handler_t) (pn_event_t *e, qd_server_t 
*qd_server, void *context);
 
 typedef struct qd_handler_context_t {

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to