TUN-3777: Fix /ready endpoint for classic tunnels

Classic tunnels flow was triggering an event for RegisteringTunnel for
every connection that was about to be established, and then a Connected
event for every connection established.

However, the RegistreringTunnel event had no connection ID, always
causing it to unset/disconnect the 0th connection making the /ready
endpoint report incorrect numbers for classic tunnels.
This commit is contained in:
Nuno Diegues
2021-01-19 12:20:11 +00:00
parent ffac598fab
commit 2d0b86f2e4
5 changed files with 18 additions and 9 deletions

View File

@@ -87,7 +87,7 @@ func TestReadinessEventHandling(t *testing.T) {
})
code, ready = rs.makeResponse()
assert.EqualValues(t, http.StatusOK, code)
assert.EqualValues(t, 2, ready)
assert.EqualValues(t, 2, ready)
// one reconnecting => still ok
rs.OnTunnelEvent(connection.Event{
@@ -98,6 +98,15 @@ func TestReadinessEventHandling(t *testing.T) {
assert.EqualValues(t, http.StatusOK, code)
assert.EqualValues(t, 1, ready)
// Regression test for TUN-3777
rs.OnTunnelEvent(connection.Event{
Index: 1,
EventType: connection.RegisteringTunnel,
})
code, ready = rs.makeResponse()
assert.NotEqualValues(t, http.StatusOK, code)
assert.Zero(t, ready)
// other disconnected => not ok
rs.OnTunnelEvent(connection.Event{
Index: 1,