X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fyaz-pdu-assoc.cpp;h=89e427d7b2966cfcb25d5e6a694410b62b9ebf6b;hb=f4a712d1c3fe702351dadafdeab971a16d9960c4;hp=5a41980d258b2ece136ff95855aeafff938cceb6;hpb=7411ed6df7fc0b535f83503f73d70e80f390e295;p=yazpp-moved-to-github.git diff --git a/src/yaz-pdu-assoc.cpp b/src/yaz-pdu-assoc.cpp index 5a41980..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.43 2005-06-25 15:53:19 adam Exp $ + * $Id: yaz-pdu-assoc.cpp,v 1.46 2006-03-30 11:58:00 adam Exp $ */ #include @@ -10,7 +10,7 @@ #include #include -#include +#include using namespace yazpp_1; @@ -38,7 +38,7 @@ PDU_Assoc::PDU_Assoc(ISocketObservable *socketObservable) } PDU_Assoc::PDU_Assoc(ISocketObservable *socketObservable, - COMSTACK cs) + COMSTACK cs) { init(socketObservable); m_cs = cs; @@ -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()