Posted on Tue, 11 Aug 2026


Client script update: quieter logs, calmer reconnects


We've pushed a new version of the sshreach.me client scripts. If you're on the socket or websocket client you'll see 627 in your client list; the legacy Python 3 client moves to 415. Clients that support in-place upgrades will pick it up on their own, and everyone else will see the usual prompt.

Most of what's in this release is about how the client behaves when something upstream isn't quite right. None of it changes how tunnels work day to day.

Log files that stay a sensible size

The client keeps a log next to itself, sshreachme.log. Until now it rotated once a day and otherwise just kept going — which is fine when there isn't much to say, and less fine when the client has something to say very often. A client that can't reach us will tell you so, repeatedly, and on a machine that's been struggling for a long stretch that file could reach a size nobody wants to discover on their disk.

So, two changes.

Rotation is now by size rather than by date. The log starts a new file once it reaches a few megabytes and keeps a handful of older ones, so the total is bounded no matter what happens. Every line is timestamped anyway, so nothing is lost by not having one file per day — and on a quiet client you actually end up keeping rather more history than before.

The client also collapses repeated messages. If the same line would otherwise be written over and over, it's written once, and when something different finally happens you'll see how many times the previous message repeated alongside it. The interesting part of a log is usually the moment things changed, and that moment is now easy to find instead of being buried under thousands of identical lines.

If you have old dated log files lying around from the previous scheme, the new client won't tidy them up for you. They're safe to delete whenever you like.

Reconnecting at a more sensible pace

When the client loses its connection, it retries. That's the right instinct, but it was going about it with more enthusiasm than most situations call for — and in a few corner cases it could end up retrying in a way that was never going to get anywhere.

The reconnection path has been reworked so that each attempt starts from a genuinely fresh connection, and so that failures which clearly aren't going to clear in the next few seconds are given a little more room before the next try. Brief network blips are handled exactly as quickly as they always were. If your link drops for a moment, you won't notice any difference.

Certificates

The servers your clients connect to use certificates that are renewed periodically. Renewals are routine and normally invisible, but a recent one didn't go as smoothly as it should have, and some clients had trouble connecting for a while as a result.

We've made some changes to address that.

On the client side, the script now recognises a certificate problem for what it is. A certificate that isn't accepted isn't something a client can fix by trying again immediately, so rather than reconnecting at full speed it settles into a slower rhythm and waits it out. When the certificate is sorted, the client picks up again on its own — no restart, nobody logging into anything. That last part is the one worth upgrading for: a client on this version gets itself back without you knowing there was anything to get back from.

Getting the update

If your client supports automatic upgrades it'll update itself shortly. Otherwise, download the script again from your client list and replace the one you're running. Your keys and settings are unaffected either way.

 

Leave a Comment:

Your Name:
Comment: