It berjocht ferskynde tweintich minuten nei it ferbinen. De teller derûnder rûn sûnt de foarige moarn, of sûnt it akkount him foar it lêst autentisearre, en neat yn 'e warskôging sei hokker. Dat is it symptoom: in herinnering bûn oan eat oars as de ferbining foar jo.

De oplossing is gjin bettere warskôging. It is beslute hokker klok it ferlet bedoelt, en dan de timer oan in objekt bine dat yn dy klok bestiet.

Wat ôfgie, en wat it telde

Trije oannimlike boarnen meitsje itselde berjocht. In kalinderregel rint op in fêste lokale tiid en wit neat fan tunnels. In teller yn 'e klient sammelet wylst hokker ferbining dan ek oan stiet en oerlibbet werferbinen. In gateway-belied lit de sesje oan 'e serverkant ferrinne en stjoert earst in warskôging.

Allinnich de lêste twa geane oer in sesje, en sels dy binne it net iens. De klantteller mjit wat it lokale proses seach; de gateway mjit wat er autentisearre en ferantwurde. In sliep, in netwurkferoaring of in werstart fan 'e waarnimmer kin se oeren skiede, en dêrom driuwe de warskôging en de twongen ferrinstaasje útinoar.

Trije klokken efter ien ferlet

Begjin mei de sin op te skriuwen dy't jo echt wolle. Warskôgje foar't de gateway dizze ferbining einiget is net itselde ferlet as herinnerje nei in dei ferbûne tiid. It is ek net itselde as melde dat dizze sesje al 23 oere oan stiet. Eltse ferzje neamt in oare barren, en in oar ûnderdiel moat dêrop antwurdzje.

Kontrolearje dan oft de gegevens bestean. In lokale begjintiidstimpel jout jo de leeftyd fan 'e sesje sûnder ôfhinklikens fan 'e server. In gateway-belied jout jo de oerbleaune libbensdoer, mar allinnich as de gateway dy bleatleit. In gebrûksrapport jout jo de doer efterôf, en dat kin gjin foarôfberjocht driuwe.

Byn de timer oan 'e sesje, net oan it akkount

Kies earst it objekt. In akkount kin ferskate apparaten en ferskate tagelyk sesjes hâlde, dus in herinnering kaaid op 'e brûkersnamme kin net sizze hokker ferbining de leeftyd berikte. Kaai it op it profyl plus dy aktivearring, en annulearje it wachtsjende berjocht as de aktivearring einiget.

Evidence you can readWhat it establishesWhere it misleads
Connection state changes to activeA session started nowDoes not carry the gateway's own session identifier
Duration reported at disconnectTotal service time for that sessionArrives too late for any advance notice
Interim usage updateTime accounted up to that updateStaleness equals the update interval
Local timestamp taken at activationAge of your observationResets whenever the observer restarts

Dy tabel is in kontrakt foar jo eigen notifier, net in beskriuwing fan 'e callback-API fan hokker klient dan ek. Wat it ynstalleare produkt dokumintearret oer ferbiningstastân is de boarne dêr't jo oan bine moatte; wêr't it allinnich autentikaasjebarrens bleatleit, sis dat lûd en akseptearje it gruttere gedrach ynstee fan in sesje ôf te lieden.

Test it mei in koarte drompel

Debug nea in dei-lange timer mei in dei-lange wachttijd. Foegje in konfigurearbere drompel ta, set dy op tritich sekonden, en rin fjouwer oergongen yn folchoarder: ferbine, wachtsje, ôfbrekke, werferbine. Eltse oergong heart krekt ien tastânferoaring te meitsjen, en it werferbinen heart in nije deadline te plenjen ynstee fan 'e âlde te ervjen.

# current connection state and profile identity
nmcli -f GENERAL.STATE,GENERAL.CONNECTION connection show work

# the notifier unit you wrote: does it restart the deadline or resume it?
journalctl --user -u vpn-timer.service --since "-5 min" -o cat

Sjoch nei de tiidstimpels ynstee fan 'e bewurding. In berjocht dat komt mei de begjintiid fan 'e foarige sesje hat it ferkearde objekt bûn, en in berjocht dat twa kear komt foar ien deadline betsjut dat de stjoerd-flag nea bewarre is.

Sliep, opnij ferbinen en miste besoarging

Sliep brekt beide naive ûntwerpen. In monotone ôftelling stopet wylst de masine sliept, in deadline op muorreklok bliuwt bewegen, en in timer dy't ûnder de sliep ôfgiet wurdt let of hielendal net besoarge. Beslis hokker gedrach jo ferlet nedich hat, lit de masine dan oer de drompel sliepe en befêstigje it.

Besoarging fertsjinnet deselde soarch. Kin it berjocht net toand wurde, set it dan yn 'e rige, en kontrolearje opnij oft de doelsesje noch bestiet foar't jo it úteinlik toane; oars wurdt de brûker warskôge oer in ferbining dy't al einige is. Twongen ôfbrekke en fernijing fan ynskriuwgegevens bliuwe bûten dit paad, want in herinnering dy't stil it lot fan 'e ferbining feroaret is in beliedsbeslút yn 'e klean fan in berjocht.

Relatearre artikelen