-
Notifications
You must be signed in to change notification settings - Fork 627
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
net: lwm2m+coap: Cherry-pick fixes and changes to CoAP and LwM2M #2312
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Use security mode (PSK or X509) to detect if we should set the socket option to verify hostname. PSK security mode cannot verify hostnames as this information is coming in the certificate, so don't set the options. Signed-off-by: Seppo Takalo <[email protected]> (cherry picked from commit 73a3438)
Add shell command for listing multiple objects, resources or resource instances. Signed-off-by: Seppo Takalo <[email protected]> (cherry picked from commit 8068cb2)
… on get_s64() success Currently GCC complains that temp64 may be used uninitialized in this function. Adds a check to ensure time is valid before assignining and fixes GCC warning. Signed-off-by: Brandon Allen <[email protected]> (cherry picked from commit bb24c83)
…cipher list Add TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 to the list for use with x509 certificates. The LWM2M v1.1 specification says that a LWM2M client which used X509 certificates must support this ciphersuite and additional ciphersuites may be supported. Signed-off-by: Jeroen Broersen <[email protected]> (cherry picked from commit f889c1a)
…characters (B005) All strip functions remove any of the provided characters instead of a prefix/suffix. This is likely a bug. See https://docs.astral.sh/ruff/rules/strip-with-multi-characters/ Signed-off-by: Pieter De Gendt <[email protected]> (cherry picked from commit 175bfb4bc9e59371a8101af96c6ff853ad18dab6)
* Use sys_rand_get() and seed the CoAP library, so our MIDs are random. * Set socket events per socket, so we don't accidentally receive on wrong socket * Reply with correct tokens Signed-off-by: Seppo Takalo <[email protected]> (cherry picked from commit ca67f51170a53f32ff9c0769d085fcbc47b905da)
Add test where we receive same UDP packet twice. Signed-off-by: Seppo Takalo <[email protected]> (cherry picked from commit 83bc1fc)
… lost Test a scenario where Ack is received but the actual response is not coming. Signed-off-by: Seppo Takalo <[email protected]> (cherry picked from commit 120aabb)
Add testcases for testing client's retry behaviour. Signed-off-by: Seppo Takalo <[email protected]> (cherry picked from commit 5559a52)
Add testcase where sending Ack to incomming Confirmable message fails. This should be reported to application as now the server is unaware that transmission have succeeded, so we cannot thread it as success. Signed-off-by: Seppo Takalo <[email protected]> (cherry picked from commit fc51fa491ff70574092fb9e5fd9c5d7e4caa2985)
… another fails CoAP client should be able to push data through functioning socket while another sockets is failing or reporting poll() errors. Signed-off-by: Seppo Takalo <[email protected]> (cherry picked from commit 237b26c44a1be61cfb04305bbf6f92fe116ab729)
Add test for ongoing observation and cancellation. Signed-off-by: Seppo Takalo <[email protected]> (cherry picked from commit 05a6ba6)
When server responds with CoAP RESET, we should inform the client and stop the request. Signed-off-by: Seppo Takalo <[email protected]> (cherry picked from commit 107dc9b)
… on response When response is received and handled, don't just clear the structure but instead mark it as ongoing=false. So if we later on receive a duplicate response for it, we can still respond with Ack or Rst. This is achieved by using release_internal_request() when we don't expect any response for it and reset_internal_request() when we really fill up a new request. Signed-off-by: Seppo Takalo <[email protected]> (cherry picked from commit 41ee35a)
Incomming Message-ID is already parsed, use it as a parameter to get_request_with_mid(). Signed-off-by: Seppo Takalo <[email protected]> (cherry picked from commit 7b0cce4)
If our internal structure is cleared, don't match tokens. Signed-off-by: Seppo Takalo <[email protected]> (cherry picked from commit 934c74f)
When response is already handled, don't forward anymore responses to the client application. Signed-off-by: Seppo Takalo <[email protected]> (cherry picked from commit a1368a7)
Return the -errno when zsock_sendto() or zsock_recvfrom() fails, so rest of the code can deal with return values, instead of separately comparing errno and return value. Signed-off-by: Seppo Takalo <[email protected]> (cherry picked from commit 48434a3c1b16c44a410b07a50905681af506ea76)
…esponding with Ack Even if we receive duplicate confirmable message, we should still respond with the Ack. Just don't deliver the second callback. This is achieved by moving the MID deduplication to after Ack handling. Signed-off-by: Seppo Takalo <[email protected]> (cherry picked from commit c0eb260c2c53b183aa4ce4a5d1d3ad20516a0b08)
…ted to callback When the client fails when parsing the response and we stop proceeding, we should report that to the application. Signed-off-by: Seppo Takalo <[email protected]> (cherry picked from commit f72d634826f5c45ee7ed54b4658c3391ae83fe54)
poll() only for sockets that have traffic ongoing or have some lifetime left. On socket failures during a poll(), stop listening for the socket. Application can recover by reconnecting the socket. Signed-off-by: Seppo Takalo <[email protected]> (cherry picked from commit f0c6efe7980002eb72e5ad009a8b822d2a43846d)
Add a new API to cancel just one, or mathing requests, instead of cancelling all ongoing requests. Signed-off-by: Seppo Takalo <[email protected]> (cherry picked from commit b3f3bce23eaa854f0eb03e2c92e1c342b9a4ef4a)
…wM2M context The pull context LwM2M client's set_socketoptions callback is currently unused and can't be set by a user. Add a public API to set the pull context's client's set_socketoptions callback. Signed-off-by: Andi Gerl <[email protected]> (cherry picked from commit 9c24214)
Use real-time scheduler with 100x speedup, so timeouts are accurate enough, but still fast for tests to run. Signed-off-by: Seppo Takalo <[email protected]> (cherry picked from commit 34a6d5a5dc834f26f06fb318b9c9a21c286a7227)
Refactor tests to be a bit shorter, so its easier to read and copy-paste for a new testcase All idioms like "ret = somecall(); zasser.." are replaced with just "zassert_ok(some_call());" Commonly used structures are global and initialized once. To avoid cross-test side-effects, suite_after-function is added to cleanup all requests. Signed-off-by: Seppo Takalo <[email protected]> (cherry picked from commit d64748cc5247645dbbc469d9f1ecf3f80dca561d)
Add test for sending multiple non-confirmable requests. Signed-off-by: Seppo Takalo <[email protected]> (cherry picked from commit 23345d2)
When waiting for response after receiving the empty Ack, client actually used way too timeout. CoAP timeout only holds the timeout value in ms. t0 is the starting time. Signed-off-by: Seppo Takalo <[email protected]> (cherry picked from commit 6c169668e9230740a780c688704c023ec43ccc98)
Non-confirmable CoAP requests need lifetime tracking as well so we can free the structure after a timeout. Signed-off-by: Seppo Takalo <[email protected]> (cherry picked from commit 2066cf6)
CoAP client does not modify any of the members, so change all pointers to const. Signed-off-by: Seppo Takalo <[email protected]> (cherry picked from commit bc4f026)
SeppoTakalo
force-pushed
the
lwm2m_coap_cherrypick
branch
from
November 28, 2024 13:58
1eefd76
to
4148a01
Compare
rlubos
approved these changes
Nov 28, 2024
juhaylinen
approved these changes
Nov 28, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Cherry-pick changes from upstream. Mostly fixes for coap_client but few changes to LwM2M engine as well.