From 70976d316a4bf21f689d2982a362b4acb9d0273f Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Tue, 10 Apr 2012 13:44:06 +0200 Subject: [PATCH] Beginnings of graceful stop --- src/yaz-pdu-assoc.cpp | 23 +++++++++++++++++++++++ src/yaz-socket-manager.cpp | 1 - 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/yaz-pdu-assoc.cpp b/src/yaz-pdu-assoc.cpp index 8d6f577..b94213e 100644 --- a/src/yaz-pdu-assoc.cpp +++ b/src/yaz-pdu-assoc.cpp @@ -422,6 +422,29 @@ COMSTACK PDU_Assoc::comstack(const char *type_and_host, void **vp) int PDU_Assoc::listen(IPDU_Observer *observer, const char *addr) { + if (*addr == '\0') + { + m_socketObservable->deleteObserver(this); + m_state = Closed; + if (m_cs) + { + yaz_log (m_log, "PDU_Assoc::close fd=%d", cs_fileno(m_cs)); + cs_close (m_cs); + } + m_cs = 0; + while (m_queue_out) + { + PDU_Queue *q_this = m_queue_out; + m_queue_out = m_queue_out->m_next; + delete q_this; + } + xfree (m_input_buf); + m_input_buf = 0; + m_input_len = 0; + + return 0; + } + shutdown(); m_PDU_Observer = observer; diff --git a/src/yaz-socket-manager.cpp b/src/yaz-socket-manager.cpp index 62182d8..e240e6f 100644 --- a/src/yaz-socket-manager.cpp +++ b/src/yaz-socket-manager.cpp @@ -168,7 +168,6 @@ void SocketManager::inspect_poll_result(int res, struct yaz_poll_fd *fds, yaz_log(YLOG_WARN, "unhandled socket event. yaz_poll returned %d", res); yaz_log(YLOG_WARN, "no_put_events=%d no_fds=%d i=%d timeout=%d", no_put_events, no_fds, i, timeout); - abort(); } } -- 1.7.10.4