From 6a6fabffa5a8a8154a7076eaf653bfb81fd7142c Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Thu, 30 Mar 2006 11:58:00 +0000 Subject: [PATCH] if PDU_Assoc::sessionNotify returns 0; the accept will fail neatly --- src/yaz-pdu-assoc-thread.cpp | 10 +++++++++- src/yaz-pdu-assoc.cpp | 16 +++++++++++----- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/yaz-pdu-assoc-thread.cpp b/src/yaz-pdu-assoc-thread.cpp index e48c051..5957ac4 100644 --- a/src/yaz-pdu-assoc-thread.cpp +++ b/src/yaz-pdu-assoc-thread.cpp @@ -2,7 +2,7 @@ * Copyright (c) 1998-2004, Index Data. * See the file LICENSE for details. * - * $Id: yaz-pdu-assoc-thread.cpp,v 1.14 2006-03-29 13:14:17 adam Exp $ + * $Id: yaz-pdu-assoc-thread.cpp,v 1.15 2006-03-30 11:58:00 adam Exp $ */ #ifdef WIN32 @@ -82,6 +82,14 @@ void PDU_AssocThread::childNotify(COMSTACK cs) /// Clone PDU Observer new_observable->m_PDU_Observer = m_PDU_Observer->sessionNotify(new_observable, cs_fileno(cs)); + + if (!new_observable->m_PDU_Observer) + { + new_observable->close(); + delete new_observable; + delete socket_observable; + return; + } worker *w = new worker; w->m_assoc = new_observable; diff --git a/src/yaz-pdu-assoc.cpp b/src/yaz-pdu-assoc.cpp index cc4094c..89e427d 100644 --- a/src/yaz-pdu-assoc.cpp +++ b/src/yaz-pdu-assoc.cpp @@ -2,7 +2,7 @@ * Copyright (c) 1998-2004, Index Data. * See the file LICENSE for details. * - * $Id: yaz-pdu-assoc.cpp,v 1.45 2006-03-29 13:14:17 adam Exp $ + * $Id: yaz-pdu-assoc.cpp,v 1.46 2006-03-30 11:58:00 adam Exp $ */ #include @@ -478,13 +478,19 @@ void PDU_Assoc::childNotify(COMSTACK cs) PDU_Assoc *new_observable = new PDU_Assoc (m_socketObservable, cs); - new_observable->m_next = m_children; - m_children = new_observable; - new_observable->m_parent = this; - // Clone PDU Observer new_observable->m_PDU_Observer = m_PDU_Observer->sessionNotify (new_observable, cs_fileno(cs)); + + if (!new_observable->m_PDU_Observer) + { + new_observable->close(); + delete new_observable; + return; + } + new_observable->m_next = m_children; + m_children = new_observable; + new_observable->m_parent = this; } const char*PDU_Assoc::getpeername() -- 1.7.10.4