diff --git a/src/server/pv/serverChannelImpl.h b/src/server/pv/serverChannelImpl.h index eac44c0..8add5e1 100644 --- a/src/server/pv/serverChannelImpl.h +++ b/src/server/pv/serverChannelImpl.h @@ -27,7 +27,10 @@ public: * @param sid channel SID. * @param css channel security session. */ - ServerChannelImpl(Channel::shared_pointer const & channel, pvAccessID cid, pvAccessID sid, ChannelSecuritySession::shared_pointer const & css); + ServerChannelImpl(Channel::shared_pointer const & channel, + const ChannelRequester::shared_pointer& requester, + pvAccessID cid, pvAccessID sid, + ChannelSecuritySession::shared_pointer const & css); /* * Destructor. */ @@ -99,6 +102,8 @@ private: */ Channel::shared_pointer _channel; + ChannelRequester::shared_pointer _requester; + /** * Channel CID. */ diff --git a/src/server/responseHandlers.cpp b/src/server/responseHandlers.cpp index 74d1dc9..8c30a33 100644 --- a/src/server/responseHandlers.cpp +++ b/src/server/responseHandlers.cpp @@ -801,7 +801,7 @@ void ServerChannelRequesterImpl::channelCreated(const Status& status, Channel::s pvAccessID sid = casTransport->preallocateChannelSID(); try { - serverChannel.reset(new ServerChannelImpl(channel, _cid, sid, _css)); + serverChannel.reset(new ServerChannelImpl(channel, shared_from_this(), _cid, sid, _css)); // ack allocation and register casTransport->registerChannel(sid, serverChannel); diff --git a/src/server/serverChannelImpl.cpp b/src/server/serverChannelImpl.cpp index 870855e..1abea68 100644 --- a/src/server/serverChannelImpl.cpp +++ b/src/server/serverChannelImpl.cpp @@ -13,9 +13,11 @@ namespace epics { namespace pvAccess { ServerChannelImpl::ServerChannelImpl(Channel::shared_pointer const & channel, + const ChannelRequester::shared_pointer &requester, pvAccessID cid, pvAccessID sid, ChannelSecuritySession::shared_pointer const & css): _channel(channel), + _requester(requester), _cid(cid), _sid(sid), _destroyed(false),