pva server: keep ChannelRequester alive

This commit is contained in:
Michael Davidsaver
2017-07-14 13:36:48 +02:00
parent 392fcc0bdc
commit 8cf56711fd
3 changed files with 9 additions and 2 deletions

View File

@@ -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.
*/

View File

@@ -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);

View File

@@ -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),