tcp name resolver unconstrained memory use
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
EPICS Base |
Confirmed
|
Medium
|
Jeff Hill |
Bug Description
I am looking at this code in the TCP name resolution implementation, and it appears that if the tcp circuit is unresponsive then this code will use an unconstrained amount of memory. The solution in the application thread is to force a block , until backlog is reduced, if too much protocol is outstanding. However in this context we are being called by the udp search agent thread and so blocking is not an option.
void SearchDestTCP :: searchRequest (
epicsGuard < epicsMutex > & guard,
const char * pBuf, size_t len )
{
// restart circuit if it was shut down
if ( ! _ptcpiiu ) {
tcpiiu * piiu = NULL;
bool newIIU = _cac.findOrCrea
guard, _addr, cacChannel:
piiu, CA_UKN_
if ( newIIU ) {
}
_ptcpiiu = piiu;
}
// does this server support TCP-based name resolution?
if ( CA_V412 ( _ptcpiiu-
assert ( CA_MESSAGE_ALIGN ( len ) == len );
}
}
tags: | added: ca client library name resolution tcp |
Changed in epics-base: | |
assignee: | nobody → Jeff Hill (johill-lanl) |
importance: | Undecided → Medium |
status: | New → Confirmed |