I now understand the problem:
EPICS 3.13 clients do not send a CA_PROTO_VERSION message in their search requests but instead have the CA minor version (which is 8) in the m_count field in the CA_PROTO_SEARCH message (the same location as the CA_PROTO_VERSION would have it).
EPICS 3.14+ clients still have that (in addition to the CA_PROTO_VERSION message). The code even checks the m_count field (and not client->minor_version) in search_reply_udp and search_reply_tcp. Also see the comment in search_reply_udp: "starting with V4.4 the count field is used (abused) to store the minor version number of the client."
But the connect consist of the TCP messages CA_PROTO_CLIENT_NAME,
CA_PROTO_HOST_NAME and CA_PROTO_CREATE_CHAN. Again no initial
CA_PROTO_VERSION message. Instead the version is embedded in the
m_available field of CA_PROTO_CREATE_CHAN message. Thus we cannot test
for the version until that message has been received.
Thus the "ignore deprecated clients" check in camessage would need to
let the following messages pass without version test: CA_PROTO_VERSION,
CA_PROTO_SEARCH, CA_PROTO_CLIENT_NAME, CA_PROTO_HOST_NAME,
CA_PROTO_CREATE_CHAN. (The last 3 are TCP only).
What I do not understand is what that code is actually supposed to
protect against. What are those "deprecated clients" and what would
break if they would not be ignored? The log message just says "ignore CA
client version older than v4.4" but not why.
--
You received this bug notification because you are a member of EPICS
Core Developers, which is subscribed to EPICS Base.
Matching subscriptions: epics-core-list-subscription
https://bugs.launchpad.net/bugs/1971737
Title:
EPICS 3.13 clients cannot connect to EPICS 7 or 3.16
Status in EPICS Base:
New
Bug description:
Since commit 95fd255d "rsrv: ignore CA client version older than v4.4"
from Jul 30 2016, EPICS 3.13 clients cannot connect any more, even
though their CA version is V4.8.
The reason is that camessage drops the incoming CA_PROTO_SEARCH
messages because the 3.13 client has not yet sent a CA_PROTO_VERSION
message and thus the code reads client->minor_version_number as 0.
This is a huge hindrance for upgrading 3.14 IOCs to EPICS 7 when there
are still 3.13 IOC (which cannot be upgraded yet) in the network which
need to connect.
To manage notifications about this bug go to:
https://bugs.launchpad.net/epics-base/+bug/1971737/+subscriptions
- References:
- [Bug 1971737] [NEW] EPICS 3.13 clients cannot connect to EPICS 7 or 3.16 Dirk Zimoch via Core-talk
- Navigate by Date:
- Prev:
Build completed: epics-base base-createImplicit-leak-840 AppVeyor via Core-talk
- Next:
Build failed: EPICS Base 7 base-7.0-583 AppVeyor via Core-talk
- Index:
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
<2022>
2023
2024
2025
- Navigate by Thread:
- Prev:
[Bug 1971737] Re: EPICS 3.13 clients cannot connect to EPICS 7 or 3.16 Dirk Zimoch via Core-talk
- Next:
[Bug 1971737] Re: EPICS 3.13 clients cannot connect to EPICS 7 or 3.16 Dirk Zimoch via Core-talk
- Index:
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
<2022>
2023
2024
2025
|