p2p: keep ChannelRequester alive

This commit is contained in:
Michael Davidsaver
2017-07-14 13:37:56 +02:00
parent bd8c6e43b0
commit 90e512a659
2 changed files with 3 additions and 2 deletions

View File

@ -192,6 +192,7 @@ ChannelCache::lookup(const std::string& newName)
//TODO: async lookup
ChannelCacheEntry::shared_pointer ent(new ChannelCacheEntry(this, newName));
ent->requester.reset(new ChannelCacheEntry::CRequester(ent));
entries[newName] = ent;
@ -200,8 +201,7 @@ ChannelCache::lookup(const std::string& newName)
// unlock to call createChannel()
epicsGuardRelease<epicsMutex> U(G);
pva::ChannelRequester::shared_pointer req(new ChannelCacheEntry::CRequester(ent));
M = provider->createChannel(newName, req);
M = provider->createChannel(newName, ent->requester);
if(!M)
THROW_EXCEPTION2(std::runtime_error, "Failed to createChannel");
}

View File

@ -117,6 +117,7 @@ struct epicsShareClass ChannelCacheEntry
// clientChannel
epics::pvAccess::Channel::shared_pointer channel;
epics::pvAccess::ChannelRequester::shared_pointer requester;
bool dropPoke;