feat: add red/blue logical Sesame channels and Echo service channel routing - #1328
feat: add red/blue logical Sesame channels and Echo service channel routing#1328Richard Peters (richardapeters) with Copilot wants to merge 12 commits into
Conversation
Co-authored-by: richardapeters <40753452+richardapeters@users.noreply.github.com>
Co-authored-by: richardapeters <40753452+richardapeters@users.noreply.github.com>
|
|
||
| void EchoOnSesame::RequestSendStream(std::size_t size) | ||
| { | ||
| requestedChannel = sendingProxy == nullptr |
There was a problem hiding this comment.
requestedChannel should probably be set when assigning a value to sendingProxy
There was a problem hiding this comment.
Addressed: requestedChannel is now set in SendingProxySelected() when sendingProxy is assigned, and RequestSendStream() uses that selected channel.
Co-authored-by: richardapeters <40753452+richardapeters@users.noreply.github.com>
Dependency ReviewThe following issues were found:
Snapshot WarningsConsider enabling retry-on-snapshot-warnings. See the documentation for more information and troubleshooting advice. License Issuesexternal/crypto/tiny-aes128/CMakeLists.txt
external/args/CMakeLists.txt
external/crypto/mbedtls/CMakeLists.txt
external/protobuf/CMakeLists.txt
lwip/lwip/CMakeLists.txt
osal/freertos/CMakeLists.txt
osal/threadx/CMakeLists.txt
infra/syntax/CMakeLists.txt
cmake/emil_test_helpers.cmake
external/crypto/micro-ecc/CMakeLists.txt
external/segger_rtt/CMakeLists.txt
OpenSSF ScorecardScorecard details
Scanned Files
|
✅
|
| Descriptor | Linter | Files | Fixed | Errors | Max errors | Warnings | Elapsed time |
|---|---|---|---|---|---|---|---|
| ✅ ACTION | actionlint | 11 | 0 | 0 | 0.06s | ||
| ✅ ACTION | zizmor | 11 | 0 | 0 | 0 | 6.28s | |
| ✅ CPP | clang-format | 1102 | 11 | 0 | 0 | 8.11s | |
| ✅ DOCKERFILE | hadolint | 2 | 0 | 0 | 0.04s | ||
| ✅ JSON | jsonlint | 7 | 0 | 0 | 0.1s | ||
| ✅ JSON | prettier | 7 | 0 | 0 | 0 | 0.48s | |
| markdownlint | 8 | 0 | 5 | 0 | 1.27s | ||
| ✅ MARKDOWN | markdown-table-formatter | 8 | 0 | 0 | 0 | 0.25s | |
| betterleaks | yes | 1 | 5 | 1.31s | |||
| ✅ REPOSITORY | checkov | yes | no | no | 31.83s | ||
| ✅ REPOSITORY | git_diff | yes | no | no | 0.07s | ||
| ✅ REPOSITORY | grype | yes | no | no | 83.75s | ||
| ✅ REPOSITORY | ls-lint | yes | no | no | 0.02s | ||
| ✅ REPOSITORY | osv-scanner | yes | no | no | 1.31s | ||
| ✅ REPOSITORY | secretlint | yes | no | no | 46.88s | ||
| ✅ REPOSITORY | syft | yes | no | no | 1.97s | ||
| ✅ REPOSITORY | trivy | yes | no | no | 14.64s | ||
| ✅ REPOSITORY | trivy-sbom | yes | no | no | 0.42s | ||
| ✅ REPOSITORY | trufflehog | yes | no | no | 6.07s | ||
| lychee | 140 | 1 | 0 | 123.82s | |||
| prettier | 21 | 1 | 1 | 0 | 0.63s | ||
| ✅ YAML | v8r | 21 | 0 | 0 | 7.11s | ||
| ✅ YAML | yamllint | 21 | 0 | 0 | 0.76s |
Detailed Issues
⚠️ REPOSITORY / betterleaks - 1 error
warning: private-key has detected secret for file services/network/CertificatesMbedTls.cpp.
┌─ services/network/CertificatesMbedTls.cpp:125:21
│
125 │ stream << "HIDDEN_BY_MEGALINTER\r\n";
│ ╰────────────────────────────────────────────────^
warning: private-key has detected secret for file services/network/test_doubles/Certificates.cpp.
┌─ services/network/test_doubles/Certificates.cpp:56:15
│
56 │ "HIDDEN_BY_MEGALINTER\r\n";
│ ╰──────────────────────────────────────────^
warning: private-key has detected secret for file services/network/test_doubles/Certificates.cpp.
┌─ services/network/test_doubles/Certificates.cpp:108:15
│
108 │ "HIDDEN_BY_MEGALINTER\r\n";
│ ╰──────────────────────────────────────────^
warning: generic-api-key has detected secret for file external/crypto/tiny-aes128/TinyAes.c.
┌─ external/crypto/tiny-aes128/TinyAes.c:17:4
│
17 │ key:
│ ╭────^
18 │ │ 2b7e151628aed2a6abf7158809cf4f3c
│ ╰────────────────────────────────────^
warning: generic-api-key has detected secret for file services/network/WebSocket.cpp.
┌─ services/network/WebSocket.cpp:81:64
│
81 │ headers.push_back(services::HttpHeader("Sec-Websocket-Key", "AQIDBAUGBbgJCgsMDQ4PEC=="));
│ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: 5 warnings emitted
⚠️ SPELL / lychee - 1 error
📝 Summary
---------------------
🔍 Total..........697
🔗 Unique.........661
✅ Successful.....691
⏳ Timeouts.........0
🔀 Redirected.....310
👻 Excluded.........5
❓ Unknown..........0
🚫 Errors...........1
⛔ Unsupported......1
Errors in external/protoc/CMakeLists.txt
[404] https://github.com/protocolbuffers/protobuf/releases/download/v$%7Bprotobuf_tag%7D/protoc-$%7Bprotobuf_version%7D-$%7Bos_postfix%7D.zip (at 18:13) | Rejected status code: 404 Not Found
Hint: Followed 310 redirects. You might want to consider replacing redirecting URLs with the resolved URLs. Use verbose mode (`-v`/`-vv`) to see redirection details.
Hint: You can configure accepted/rejected response codes with `-a` or `--accept`
⚠️ MARKDOWN / markdownlint - 5 errors
.github/instructions/microtest.instructions.md:7 error MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "## Google Test Suite Coding Ru..."]
external/crypto/tiny-aes128/README.md:1 error MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "### Tiny AES128 in C"]
external/crypto/tiny-aes128/README.md:29 error MD046/code-block-style Code block style [Expected: fenced; Actual: indented]
external/crypto/tiny-aes128/README.md:39 error MD046/code-block-style Code block style [Expected: fenced; Actual: indented]
external/crypto/tiny-aes128/README.md:49 error MD046/code-block-style Code block style [Expected: fenced; Actual: indented]
⚠️ YAML / prettier - 1 error
[error] Explicitly specified pattern "documents/modules/ROOT/examples/clangformat.yaml" is a symbolic link.
.clusterfuzzlite/project.yaml 52ms (unchanged)
.github/dependabot.yml 17ms (unchanged)
.github/workflows/ci.yml 66ms (unchanged)
.github/workflows/dependency-scanner.yml 11ms (unchanged)
.github/workflows/documentation.yml 12ms (unchanged)
.github/workflows/fuzzing-batch.yml 6ms (unchanged)
.github/workflows/fuzzing-cron.yml 7ms (unchanged)
.github/workflows/fuzzing-pr.yml 9ms (unchanged)
.github/workflows/linting-formatting.yml 14ms (unchanged)
.github/workflows/release-please.yml 8ms (unchanged)
.github/workflows/security.yml 5ms (unchanged)
.github/workflows/static-analysis.yml 16ms (unchanged)
.github/workflows/validate-pr.yml 16ms (unchanged)
.ls-lint.yml 2ms
.mega-linter.yml 2ms (unchanged)
antora-playbook-branch.yml 2ms (unchanged)
antora-playbook-site.yml 4ms (unchanged)
documents/antora.yml 2ms (unchanged)
documents/supplemental-ui/ui.yml 1ms (unchanged)
mull.yml 2ms (unchanged)
Notices
REPOSITORY_GITLEAKS, REPOSITORY_KICS. See Removed linters to find their replacements.
See detailed reports in MegaLinter artifacts
Your project could benefit from a custom flavor, which would allow you to run only the linters you need, and thus improve runtime performances. (Skip this info by defining FLAVOR_SUGGESTIONS: false)
- Documentation: Custom Flavors
- Command:
npx mega-linter-runner@10.0.0 --custom-flavor-setup --custom-flavor-linters ACTION_ACTIONLINT,ACTION_ZIZMOR,CPP_CLANG_FORMAT,DOCKERFILE_HADOLINT,JSON_JSONLINT,JSON_PRETTIER,MARKDOWN_MARKDOWNLINT,MARKDOWN_MARKDOWN_TABLE_FORMATTER,REPOSITORY_CHECKOV,REPOSITORY_GIT_DIFF,REPOSITORY_BETTERLEAKS,REPOSITORY_GRYPE,REPOSITORY_LS_LINT,REPOSITORY_OSV_SCANNER,REPOSITORY_SECRETLINT,REPOSITORY_SYFT,REPOSITORY_TRIVY,REPOSITORY_TRIVY_SBOM,REPOSITORY_TRUFFLEHOG,SPELL_LYCHEE,YAML_PRETTIER,YAML_YAMLLINT,YAML_V8R

Show us your support by starring ⭐ the repository
Co-authored-by: richardapeters <40753452+richardapeters@users.noreply.github.com>
…uest API Co-authored-by: richardapeters <40753452+richardapeters@users.noreply.github.com>
…ions Co-authored-by: richardapeters <40753452+richardapeters@users.noreply.github.com>
Co-authored-by: richardapeters <40753452+richardapeters@users.noreply.github.com>
…n test Co-authored-by: richardapeters <40753452+richardapeters@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
|
Copilot resolve the merge conflicts in this pull request |
…condition-echo-sesame # Conflicts: # services/util/SesameSecured.cpp Co-authored-by: richardapeters <40753452+richardapeters@users.noreply.github.com>
| public: | ||
| virtual void RequestSendMessage(std::size_t size) = 0; | ||
| virtual void RequestSendMessage(std::size_t size, SesameChannel channel) = 0; | ||
| void RequestSendMessage(std::size_t size) |
There was a problem hiding this comment.
[MegaLinter] reported by reviewdog 🐶
| void RequestSendMessage(std::size_t size) | |
| void RequestSendMessage(std::size_t size) |
| else if (requestedChannel != std::nullopt | ||
| && SesameEncodedObserver::Subject().WorstCaseEncodedMessageSize(*RequestedSendMessageSize(*requestedChannel) + 1) + releaseWindowSize <= otherAvailableWindow) |
There was a problem hiding this comment.
[MegaLinter] reported by reviewdog 🐶
| else if (requestedChannel != std::nullopt | |
| && SesameEncodedObserver::Subject().WorstCaseEncodedMessageSize(*RequestedSendMessageSize(*requestedChannel) + 1) + releaseWindowSize <= otherAvailableWindow) | |
| else if (requestedChannel != std::nullopt && SesameEncodedObserver::Subject().WorstCaseEncodedMessageSize(*RequestedSendMessageSize(*requestedChannel) + 1) + releaseWindowSize <= otherAvailableWindow) |
| using SesameObserver::SesameObserver; | ||
| using SesameObserver::SendMessageStreamAvailable; |
There was a problem hiding this comment.
[MegaLinter] reported by reviewdog 🐶
| using SesameObserver::SesameObserver; | |
| using SesameObserver::SendMessageStreamAvailable; |
| using SesameObserver::SesameObserver; | ||
| using SesameObserver::SendMessageStreamAvailable; | ||
| using SesameObserver::ReceivedMessage; | ||
|
|
There was a problem hiding this comment.
[MegaLinter] reported by reviewdog 🐶
| using SesameObserver::SendMessageStreamAvailable; | |
| using SesameObserver::SesameObserver; | |
|
Co-authored-by: richardapeters <40753452+richardapeters@users.noreply.github.com>



Echo-over-Sesame could deadlock when bidirectional request/response traffic contends for a single logical message lane. This change introduces two symmetric logical channels (
red/blue) on Sesame windowed messaging and lets Echo services be explicitly pinned to one channel.Protocol extension (Sesame Windowed)
4 = MessageRed,5 = MessageBlue.API surface updates
Sesame/SesameObserverchannel-aware operations:RequestSendMessage(size, channel)SendMessageStreamAvailable(writer, channel)ReceivedMessage(reader, channel)redwhen no channel is specified.Echo routing by service
EchoOnSesame:SetServiceChannel(serviceId, channel)ServiceChannel(serviceId)Plumbing/generation/docs
SesameSecuredtransparently.ServiceProxysupport for carryingserviceId; updated protoc C++ proxy generation to initialize it.MessageRed/MessageBlue.