fosrl / fosrl/olm

Olm still reports relay after packets start going directly to Newt

Open
#141 4 comments 0 reactions 1 assignee Claimed by @oschwartz10612 View on GitHub
needs investigating
Dominant language
Go
Stars
116
Forks
25
Avg merge
23h 26m
Merged PRs (30d)
4

Description

## Describe the Bug

I have two Newt sites on the same private network as my Mac. They use host networking and fixed UDP ports. The Mac is on a separate routed subnet and can reach both Newt addresses directly.

After fully restarting the Pangolin macOS client, both sites showed:

```json
{
"endpoint": "pangolin.example.com",
"isRelay": true,
"isLocal": false
}
```

About a minute later, `tcpdump` showed the Pangolin PacketTunnel process sending and receiving packets directly with one of the Newt LAN addresses:

```text
192.168.10.11.55000 > 192.168.30.16.52143: UDP, length 128
192.168.30.16.52143 > 192.168.10.11.55000: UDP, length 96
```

`lsof` confirmed that source port 55000 belonged to the PacketTunnel process. The 25-byte local test request and reply also succeeded for both Newt addresses.

The status still showed `isRelay: true` and `isLocal: false`. `lastSeen` stopped updating for those sites at the time they changed to relay, while other peers continued updating.

I found [#72](https://github.com/fosrl/olm/issues/72), but I do not have an overlapping private-resource route for either Newt address.

Am I misunderstanding what `isRelay` and `isLocal` are intended to report, or should they change when the UDP socket starts using the local Newt address?

## Environment

- OS Type & Version: macOS 26.6, build 25G72
- Pangolin Version: 1.22.0
- Edition: Enterprise
- Gerbil Version: 1.5.0
- Traefik Version: 3.7
- Newt Version: 1.16.0
- Client Version: Pangolin macOS 0.11.0

## To Reproduce

1. Run a Newt site with host networking and a fixed UDP port.
2. Make the Newt LAN address reachable from the client.
3. Fully restart the Pangolin macOS client.
4. Check `/status` through `/var/run/olm.sock`.
5. Capture packets between the client and Newt LAN addresses.

## Expected Behavior

I expected the status to show the local Newt address with `isLocal: true` once packets started going directly to it. If these fields describe something other than the address actually in use, clarification would be helpful.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.