-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Disable CRMP if we send/receive messages not over UDP transport #6407
Conversation
How is this different than this? #6317 |
Yes, this is to support Application messages over TCP (and disable CRMP for such messages). |
Size increase report for "esp32-example-build" from 6df63b4
Full report output
|
Size increase report for "nrfconnect-example-build" from 6df63b4
Full report output
|
Problem
I found CRMP is always enabled regardless of low level transport for application dispatch. This is regression from recent changes.
Currently, we use IsTransportReliable() to decide if to enable CRMP, this logic is wrong since TransportMgr is a tuple which can support TCP and UDP simultaneously.
We need to use the destination address instead to decide if use CRMP:
For PASE/CASE message exchange, we don't have PeerConnectionState, we can relay on the SessionEstablishmentExchangeDispatch to do this check since it has the peer destination address.
For Application message exchange, we can get the peer address form PeerConnectionState, and do the check.
Summary of Changes
Disable CRMP if we send/receive messages not over UDP transport
Fixes #6026