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

pomerium / envoy-custom / 21838649612
100%

Build:
DEFAULT BRANCH: main
Ran 09 Feb 2026 08:54PM UTC
Jobs 1
Files 80
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

09 Feb 2026 08:04PM UTC coverage: 100.0%. Remained the same
21838649612

push

github

web-flow
Merge pull request #150 from pomerium/kralicky/ssh-graceful-shutdown

This PR includes refactors to channel lifetime management, and new APIs to allow for graceful interrupt handling.

Using a new ChannelControlAction type, the management server can preconfigure a ChannelData message to be sent to the downstream client in the event that the connection is interrupted. Currently the API is limited in what it allows the server to configure, but the underlying mechanism is much more flexible should we need to support more complex logic in the future. 

One major limitation of the existing code here was that it would treat a management server grpc disconnection as a connection level error, which would send an immediate DisconnectMsg to the downstream, which ignores all other channel state and forcibly ends the whole connection. Sending channel messages on an open channel, then relying on the Disconnect message to clean things up is rather unreliable for several reasons. Instead, we now are able to force a proper channel close handshake for any/all active channels, which will guarantee delivery of the configured interrupt channel data messages (as long as Envoy isn't killed during this, of course). This also allows us to handle server-wide errors, _and_ hook into the builtin envoy drain system to force graceful shutdown of all active connections if pomerium is shutting down.

This is implemented using a new mechanism that allows Envoy to "preempt" an active channel, which kicks off the channel close handshake sequence. This sequence of messages is described in more detail in the code. There are several different states the pair of channels could be in when this happens, so the channel state tracking in ChannelIDManager was made more granular to be able to capture all the edge cases.

Some other smaller changes include:
- Simplified the Channel interface, and added a new `wire::ChannelMessage` type alias which contains only a subset of all message types. Thi... (continued)

488 of 488 new or added lines in 13 files covered. (100.0%)

7150 of 7150 relevant lines covered (100.0%)

20006.0 hits per line

Jobs
ID Job ID Ran Files Coverage
1 21838649612.1 09 Feb 2026 08:54PM UTC 80
100.0
GitHub Action Run
Source Files on build 21838649612
  • Tree
  • List 80
  • Changed 17
  • Source Changed 17
  • Coverage Changed 16
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #21838649612
  • 3faf2a78 on github
  • Prev Build on main (#21700290970)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc