• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

dangernoodle-io / breadboard / 30771460894
97%

Build:
DEFAULT BRANCH: main
Ran 02 Aug 2026 11:05PM UTC
Jobs 1
Files 215
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

02 Aug 2026 11:03PM UTC coverage: 96.857% (+0.003%) from 96.854%
30771460894

push

github

web-flow
feat: resolve bb_tcp_client TLS creds via bb_tls_creds (#1206)

bb_tcp_client's ESP-IDF backend previously read PEM data
straight from the instance cfg, forcing every TLS consumer to
hand-roll the programmatic-override/NVS/embedded-default
precedence bb_tls_creds already owns as the SSOT.

bb_tcp_client_init() now resolves ca_cert_pem/
client_cert_pem/client_key_pem via bb_tls_creds_resolve()
once, using cfg's PEM fields as the top-tier programmatic
override (any left NULL fall through to NVS in the same
namespace the instance was initialised with, then to embedded
weak defaults). The resolved creds are cached in the instance
for its lifetime and freed by bb_tcp_client_destroy(). A
plaintext instance does no credential work; an empty resolve
still falls through to the ESP cert bundle, matching existing
behaviour.

connect() passes inst->creds.ca_len/cert_len/key_len minus 1
to esp_transport_ssl_set_*_data(), not the raw length.
bb_tls_creds' *_len fields are NUL-inclusive (strlen(pem) + 1)
so mbedtls_x509_crt_parse's PEM path gets the NUL it requires,
but esp-idf's set_*_data() setters take PEM content length and
add their own +1 internally (tcp_transport/transport_ssl.c).
The pre-existing strlen()-based calls this replaces were
already correct for that contract; this keeps the same
effective byte count while sourcing the PEMs from
bb_tls_creds instead of raw cfg, rather than fixing a
pre-existing bug.

The precedence-wiring logic lives in a new portable helper in
bb_tcp_client_common.c (bb_tcp_client_priv_resolve_tls_creds()),
compiled for both host and ESP-IDF, so it is host-unit-testable
even though only the ESP-IDF backend consumes the result.

Part of B1-1390.


Claude-Session: https://claude.ai/code/session_0119nuE2NZME9y2aYEVJTPB5

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>

8228 of 8792 branches covered (93.59%)

Branch coverage included in aggregate %.

9 of 9 new or added lines in 1 file covered. (100.0%)

13926 of 14081 relevant lines covered (98.9%)

2683.04 hits per line

Jobs
ID Job ID Ran Files Coverage
1 30771460894.1 02 Aug 2026 11:05PM UTC 215
96.86
GitHub Action Run
Source Files on build 30771460894
  • Tree
  • List 215
  • Changed 1
  • Source Changed 1
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #30771460894
  • 628ab059 on github
  • Prev Build on main (#30771128505)
  • Next Build on main (#30772311600)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc