)]}'
{"id":"openvpn~1742","triplet_id":"openvpn~master~Iafa9efc1c156974ad9f5752e9de810a8c2f68c30","project":"openvpn","branch":"master","full_branch":"refs/heads/master","topic":"oob-server-probe","attention_set":{"1000041":{"account":{"_account_id":1000041,"name":"Ralf Lici","display_name":"Ralf Lici","email":"ralf@mandelbit.com","username":"ralf_lici"},"last_update":"2026-09-11 09:11:03.000000000","reason":"Vote got outdated and was removed: Code-Review+1"},"1000003":{"account":{"_account_id":1000003,"name":"Arne Schwabe","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"last_update":"2026-09-17 07:01:30.000000000","reason":"\u003cGERRIT_ACCOUNT_1000008\u003e replied on the change","reason_account":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"}},"1000001":{"account":{"_account_id":1000001,"name":"Frank Lichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"last_update":"2026-07-28 15:03:23.000000000","reason":"Vote got outdated and was removed: Code-Review+2"}},"removed_from_attention_set":{"1000008":{"account":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"last_update":"2026-09-17 07:01:30.000000000","reason":"\u003cGERRIT_ACCOUNT_1000008\u003e replied on the change","reason_account":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"}}},"hashtags":[],"change_id":"Iafa9efc1c156974ad9f5752e9de810a8c2f68c30","subject":"oob: Add probe request parsing and the probe-reply decision","status":"NEW","created":"2026-06-29 07:58:31.000000000","updated":"2026-09-30 20:19:52.000000000","submit_type":"CHERRY_PICK","total_comment_count":17,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"73115b1dfedfffc5132b4cce36fc68f746496638","_number":1742,"virtual_id_number":1742,"owner":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"actions":{},"labels":{"Code-Review":{"rejected":{"_account_id":1000003,"name":"Arne Schwabe","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"all":[{"value":0,"permitted_voting_range":{"min":-2,"max":2},"_account_id":1000041,"name":"Ralf Lici","display_name":"Ralf Lici","email":"ralf@mandelbit.com","username":"ralf_lici"},{"value":-2,"date":"2026-09-30 20:19:52.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":1000003,"name":"Arne Schwabe","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},{"value":0,"permitted_voting_range":{"min":-2,"max":2},"_account_id":1000001,"name":"Frank Lichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."}],"values":{"-2":"This shall not be submitted","-1":"I would prefer this is not submitted as is"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me, approved"},"description":"","default_value":0,"blocking":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":1000001,"name":"Frank Lichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},{"_account_id":1000003,"name":"Arne Schwabe","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},{"_account_id":1000041,"name":"Ralf Lici","display_name":"Ralf Lici","email":"ralf@mandelbit.com","username":"ralf_lici"}],"CC":[{"_account_id":1000026,"name":"openvpn-devel","email":"openvpn-devel@lists.sourceforge.net","username":"openvpn-devel"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-06-29 07:58:36.000000000","updated_by":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"real_updated_by":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"reviewer":{"_account_id":1000026,"name":"openvpn-devel","email":"openvpn-devel@lists.sourceforge.net","username":"openvpn-devel"},"state":"CC"},{"updated":"2026-06-29 07:58:36.000000000","updated_by":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"real_updated_by":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"reviewer":{"_account_id":1000003,"name":"Arne Schwabe","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"state":"REVIEWER"},{"updated":"2026-07-20 13:51:28.000000000","updated_by":{"_account_id":1000001,"name":"Frank Lichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"real_updated_by":{"_account_id":1000001,"name":"Frank Lichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"reviewer":{"_account_id":1000001,"name":"Frank Lichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"state":"REVIEWER"},{"updated":"2026-09-08 08:12:04.000000000","updated_by":{"_account_id":1000041,"name":"Ralf Lici","display_name":"Ralf Lici","email":"ralf@mandelbit.com","username":"ralf_lici"},"real_updated_by":{"_account_id":1000041,"name":"Ralf Lici","display_name":"Ralf Lici","email":"ralf@mandelbit.com","username":"ralf_lici"},"reviewer":{"_account_id":1000041,"name":"Ralf Lici","display_name":"Ralf Lici","email":"ralf@mandelbit.com","username":"ralf_lici"},"state":"REVIEWER"}],"messages":[{"id":"ebc9830d622adef58d7a9c967e1b88f608491877","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-06-29 07:58:31.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"112e36d165db15c361709a49d5c15a7d343dd63a","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-06-29 12:37:47.000000000","message":"Uploaded patch set 2: Patch Set 1 was rebased.","accounts_in_message":[],"_revision_number":2},{"id":"b622d384d2800ca5058070d12738a3d412472b51","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-07-02 12:30:33.000000000","message":"Uploaded patch set 3: Patch Set 2 was rebased.","accounts_in_message":[],"_revision_number":3},{"id":"263ea4918e09d33af429085453d966b3c8384130","tag":"autogenerated:gerrit:setTopic","author":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-07-06 07:11:36.000000000","message":"Topic set to oob-server-probe","accounts_in_message":[],"_revision_number":3},{"id":"16b10c3c6d6c078f33d95300323c52b90ed8a5b2","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-07-09 13:47:21.000000000","message":"Uploaded patch set 4: Patch Set 3 was rebased.","accounts_in_message":[],"_revision_number":4},{"id":"a1c10efa78d66556e446f263118e1758a44591fe","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-07-14 08:14:41.000000000","message":"Uploaded patch set 5: New patch set was added with same tree, parent tree, and commit message as Patch Set 4.","accounts_in_message":[],"_revision_number":5},{"id":"b2ad67fc4b852cfc374e061096f26edb019efd00","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-07-14 12:32:24.000000000","message":"Uploaded patch set 6: Patch Set 5 was rebased.","accounts_in_message":[],"_revision_number":6},{"id":"205fc33030d1d82d8357db8b2772d34f159b7ca8","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-07-16 08:09:01.000000000","message":"Uploaded patch set 7: Patch Set 6 was rebased.","accounts_in_message":[],"_revision_number":7},{"id":"a573a069919e2973cad08b54878ba0c194689a13","author":{"_account_id":1000001,"name":"Frank Lichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"date":"2026-07-20 13:51:28.000000000","message":"Patch Set 7: Code-Review-1\n\n(3 comments)","accounts_in_message":[],"_revision_number":7},{"id":"7f64a6b9f8199a74a99763bdbf62675e256023da","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-07-21 12:35:24.000000000","message":"Uploaded patch set 8.\n\nOutdated Votes:\n* Code-Review-1 (copy condition: \"changekind:NO_CHANGE OR changekind:TRIVIAL_REBASE OR is:MIN\")\n","accounts_in_message":[],"_revision_number":8},{"id":"37d9c614c8b19ced6eec5f57befae065c5308e44","author":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-07-21 12:36:43.000000000","message":"Patch Set 8:\n\n(2 comments)","accounts_in_message":[],"_revision_number":8},{"id":"f7f56a7d85ff8fd45abf8025dcc6aa9738b8d31a","author":{"_account_id":1000001,"name":"Frank Lichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"date":"2026-07-22 15:33:11.000000000","message":"Patch Set 8: Code-Review+2","accounts_in_message":[],"_revision_number":8},{"id":"6e8c4e1838349fb788d907545584fc8b8bde2453","author":{"_account_id":1000003,"name":"Arne Schwabe","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"date":"2026-07-26 01:07:19.000000000","message":"Patch Set 8: Code-Review-2\n\n(2 comments)","accounts_in_message":[],"_revision_number":8},{"id":"08a55a9de3548f84b53fd5fd72f7526fed43d544","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-07-28 15:03:23.000000000","message":"Uploaded patch set 9.\n\nCopied Votes:\n* Code-Review-2 (copy condition: \"changekind:NO_CHANGE OR changekind:TRIVIAL_REBASE OR **is:MIN**\")\n\nOutdated Votes:\n* Code-Review+2 (copy condition: \"changekind:NO_CHANGE OR changekind:TRIVIAL_REBASE OR is:MIN\")\n","accounts_in_message":[],"_revision_number":9},{"id":"4807ca7e1391cab6f3162de4a3247ebc870ed0c5","author":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-07-28 15:04:42.000000000","message":"Patch Set 9:\n\n(2 comments)","accounts_in_message":[],"_revision_number":9},{"id":"3afb905ddca2801d9026d528e5988459a233daea","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-07-29 12:22:54.000000000","message":"Uploaded patch set 10: Commit message was updated.\n\nCopied Votes:\n* Code-Review-2 (copy condition: \"changekind:NO_CHANGE OR changekind:TRIVIAL_REBASE OR **is:MIN**\")\n","accounts_in_message":[],"_revision_number":10},{"id":"1ecdb230ae4395608f54c395b983a5ce9ebad314","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-08-04 08:10:28.000000000","message":"Uploaded patch set 11: Patch Set 10 was rebased.\n\nCopied Votes:\n* Code-Review-2 (copy condition: \"changekind:NO_CHANGE OR **changekind:TRIVIAL_REBASE** OR **is:MIN**\")\n","accounts_in_message":[],"_revision_number":11},{"id":"eac7a192d6c7796ce88c1d37bc5423890fc06754","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-08-28 12:51:00.000000000","message":"Uploaded patch set 12.\n\nCopied Votes:\n* Code-Review-2 (copy condition: \"changekind:NO_CHANGE OR changekind:TRIVIAL_REBASE OR **is:MIN**\")\n","accounts_in_message":[],"_revision_number":12},{"id":"eb7be9d12d920c8882a4bdc299f0a798f7bffb82","author":{"_account_id":1000041,"name":"Ralf Lici","display_name":"Ralf Lici","email":"ralf@mandelbit.com","username":"ralf_lici"},"date":"2026-09-08 08:12:04.000000000","message":"Patch Set 12: Code-Review-1\n\n(3 comments)","accounts_in_message":[],"_revision_number":12},{"id":"c88324257af000bd4b8ce922173430559cc2e9cf","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-09-09 07:27:02.000000000","message":"Uploaded patch set 13.\n\nCopied Votes:\n* Code-Review-2 (copy condition: \"changekind:NO_CHANGE OR changekind:TRIVIAL_REBASE OR **is:MIN**\")\n\nOutdated Votes:\n* Code-Review-1 (copy condition: \"changekind:NO_CHANGE OR changekind:TRIVIAL_REBASE OR is:MIN\")\n","accounts_in_message":[],"_revision_number":13},{"id":"eabfa7ab9856ee4348f35a25977db9d9313ac5ca","author":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-09-09 07:27:42.000000000","message":"Patch Set 13:\n\n(3 comments)","accounts_in_message":[],"_revision_number":13},{"id":"7ab3550a873c18c79236fac25e4cfd3ca66c5f7d","author":{"_account_id":1000041,"name":"Ralf Lici","display_name":"Ralf Lici","email":"ralf@mandelbit.com","username":"ralf_lici"},"date":"2026-09-09 11:43:45.000000000","message":"Patch Set 13: Code-Review+1","accounts_in_message":[],"_revision_number":13},{"id":"f0c73463fa64eb5ef0a99a16c726fe36e788e85d","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-09-11 09:11:03.000000000","message":"Uploaded patch set 14: Patch Set 13 was rebased. Commit message was updated.\n\nCopied Votes:\n* Code-Review-2 (copy condition: \"changekind:NO_CHANGE OR changekind:TRIVIAL_REBASE OR **is:MIN**\")\n\nOutdated Votes:\n* Code-Review+1 (copy condition: \"changekind:NO_CHANGE OR changekind:TRIVIAL_REBASE OR is:MIN\")\n","accounts_in_message":[],"_revision_number":14},{"id":"02ecc1cdfa90e4c79de45c11d0b7ea4743e587bd","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-09-14 14:18:32.000000000","message":"Uploaded patch set 15: Patch Set 14 was rebased. Commit message was updated.\n\nCopied Votes:\n* Code-Review-2 (copy condition: \"changekind:NO_CHANGE OR changekind:TRIVIAL_REBASE OR **is:MIN**\")\n","accounts_in_message":[],"_revision_number":15},{"id":"2671663d4597fb025f3f841967a88db414410439","author":{"_account_id":1000003,"name":"Arne Schwabe","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"date":"2026-09-16 23:20:47.000000000","message":"Patch Set 15: Code-Review-2\n\n(1 comment)","accounts_in_message":[],"_revision_number":15},{"id":"387694258e8f511fb9735466e00b0d91810960e5","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-09-17 07:01:11.000000000","message":"Uploaded patch set 16.\n\nCopied Votes:\n* Code-Review-2 (copy condition: \"changekind:NO_CHANGE OR changekind:TRIVIAL_REBASE OR **is:MIN**\")\n","accounts_in_message":[],"_revision_number":16},{"id":"3219708e817f340c3c2cc4ed5f01a3747e56aff5","author":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-09-17 07:01:30.000000000","message":"Patch Set 15:\n\n(1 comment)","accounts_in_message":[],"_revision_number":15},{"id":"9e14707af1724daf75a781e734f86e6099ffb553","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-09-18 08:31:39.000000000","message":"Uploaded patch set 17.\n\nCopied Votes:\n* Code-Review-2 (copy condition: \"changekind:NO_CHANGE OR changekind:TRIVIAL_REBASE OR **is:MIN**\")\n","accounts_in_message":[],"_revision_number":17},{"id":"1ae740c63cf3f1ff49385f6b6d01fd78f95c46fb","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-09-29 13:16:31.000000000","message":"Uploaded patch set 18.\n\nCopied Votes:\n* Code-Review-2 (copy condition: \"changekind:NO_CHANGE OR changekind:TRIVIAL_REBASE OR **is:MIN**\")\n","accounts_in_message":[],"_revision_number":18},{"id":"8f62c1db1c5cbd60191a05b51eadb424c618bb6d","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-09-30 08:25:29.000000000","message":"Uploaded patch set 19.\n\nCopied Votes:\n* Code-Review-2 (copy condition: \"changekind:NO_CHANGE OR changekind:TRIVIAL_REBASE OR **is:MIN**\")\n","accounts_in_message":[],"_revision_number":19},{"id":"73115b1dfedfffc5132b4cce36fc68f746496638","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-09-30 20:19:52.000000000","message":"Uploaded patch set 20: Patch Set 19 was rebased.\n\nCopied Votes:\n* Code-Review-2 (copy condition: \"changekind:NO_CHANGE OR **changekind:TRIVIAL_REBASE** OR **is:MIN**\")\n","accounts_in_message":[],"_revision_number":20}],"current_revision_number":20,"current_revision":"653260954600e160459fcfe677583bcb99e55a98","revisions":{"caefe6c905a8f9a6fecf18b0301daa8fdc444f51":{"kind":"REWORK","_number":1,"created":"2026-06-29 07:58:31.000000000","uploader":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"ref":"refs/changes/42/1742/1","fetch":{"anonymous http":{"url":"https://gerrit.openvpn.net/openvpn","ref":"refs/changes/42/1742/1","commands":{"Branch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/1 \u0026\u0026 git checkout -b change-1742 FETCH_HEAD","Checkout":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://gerrit.openvpn.net/openvpn refs/changes/42/1742/1","Reset To":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/1 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"2ff2cd48f827716f0eb8e58c4396eec027284068","subject":"oob: Add control message TLV encoding (P_CONTROL_OOB_V1)"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-06-18 12:15:00.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-06-29 07:58:02.000000000","tz":180},"subject":"oob: Add SERVER_PROBE parsing and the probe-reply decision","message":"oob: Add SERVER_PROBE parsing and the probe-reply decision\n\nAdd the message-level helpers the server needs to answer a probe:\n\n  - oob_server_probe_read() scans the TLV payload of a received OOB\n    SERVER_PROBE for the probe_parameter TLV, skipping other/future TLV\n    types and rejecting malformed or truncated input.\n  - oob_timestamp_in_window() performs the cheap replay/skew check on the\n    probe timestamp described in the wire protocol specification.\n  - oob_build_probe_reply() composes the two: given a received SERVER_PROBE\n    it scans for the probe_parameter, drops the probe if it is missing or\n    its timestamp is outside the acceptable window, and otherwise populates\n    the probe_reply (echoing the peer\u0027s session id) to send back.\n\nThese are pure functions exercised by unit tests; the server packet path\ncalls oob_build_probe_reply() in a follow-up, which performs the actual send.\n\nChange-Id: Iafa9efc1c156974ad9f5752e9de810a8c2f68c30\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"},"bbae0fe83a7a0a59e3084f917241cc5ab30a2576":{"kind":"TRIVIAL_REBASE","_number":2,"created":"2026-06-29 12:37:47.000000000","uploader":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"ref":"refs/changes/42/1742/2","fetch":{"anonymous http":{"url":"https://gerrit.openvpn.net/openvpn","ref":"refs/changes/42/1742/2","commands":{"Branch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/2 \u0026\u0026 git checkout -b change-1742 FETCH_HEAD","Checkout":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://gerrit.openvpn.net/openvpn refs/changes/42/1742/2","Reset To":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/2 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"e268a6167a01da9be34af5193ec5ba8a5c093e82","subject":"oob: Add control message TLV encoding (P_CONTROL_OOB_V1)"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-06-18 12:15:00.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-06-29 12:32:06.000000000","tz":180},"subject":"oob: Add SERVER_PROBE parsing and the probe-reply decision","message":"oob: Add SERVER_PROBE parsing and the probe-reply decision\n\nAdd the message-level helpers the server needs to answer a probe:\n\n  - oob_server_probe_read() scans the TLV payload of a received OOB\n    SERVER_PROBE for the probe_parameter TLV, skipping other/future TLV\n    types and rejecting malformed or truncated input.\n  - oob_timestamp_in_window() performs the cheap replay/skew check on the\n    probe timestamp described in the wire protocol specification.\n  - oob_build_probe_reply() composes the two: given a received SERVER_PROBE\n    it scans for the probe_parameter, drops the probe if it is missing or\n    its timestamp is outside the acceptable window, and otherwise populates\n    the probe_reply (echoing the peer\u0027s session id) to send back.\n\nThese are pure functions exercised by unit tests; the server packet path\ncalls oob_build_probe_reply() in a follow-up, which performs the actual send.\n\nChange-Id: Iafa9efc1c156974ad9f5752e9de810a8c2f68c30\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"},"1677f0129d972112fb253c172e8802b595135e3d":{"kind":"TRIVIAL_REBASE","_number":3,"created":"2026-07-02 12:30:33.000000000","uploader":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"ref":"refs/changes/42/1742/3","fetch":{"anonymous http":{"url":"https://gerrit.openvpn.net/openvpn","ref":"refs/changes/42/1742/3","commands":{"Branch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/3 \u0026\u0026 git checkout -b change-1742 FETCH_HEAD","Checkout":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://gerrit.openvpn.net/openvpn refs/changes/42/1742/3","Reset To":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/3 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"493aec58151150b86fbdc1665e116706b34dcfcf","subject":"oob: Add control message TLV encoding (P_CONTROL_OOB_V1)"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-06-18 12:15:00.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-02 12:07:42.000000000","tz":180},"subject":"oob: Add SERVER_PROBE parsing and the probe-reply decision","message":"oob: Add SERVER_PROBE parsing and the probe-reply decision\n\nAdd the message-level helpers the server needs to answer a probe:\n\n  - oob_server_probe_read() scans the TLV payload of a received OOB\n    SERVER_PROBE for the probe_parameter TLV, skipping other/future TLV\n    types and rejecting malformed or truncated input.\n  - oob_timestamp_in_window() performs the cheap replay/skew check on the\n    probe timestamp described in the wire protocol specification.\n  - oob_build_probe_reply() composes the two: given a received SERVER_PROBE\n    it scans for the probe_parameter, drops the probe if it is missing or\n    its timestamp is outside the acceptable window, and otherwise populates\n    the probe_reply (echoing the peer\u0027s session id) to send back.\n\nThese are pure functions exercised by unit tests; the server packet path\ncalls oob_build_probe_reply() in a follow-up, which performs the actual send.\n\nChange-Id: Iafa9efc1c156974ad9f5752e9de810a8c2f68c30\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"},"c8f581d08c9f375d0362984280d80fe4089adb3d":{"kind":"TRIVIAL_REBASE","_number":4,"created":"2026-07-09 13:47:21.000000000","uploader":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"ref":"refs/changes/42/1742/4","fetch":{"anonymous http":{"url":"https://gerrit.openvpn.net/openvpn","ref":"refs/changes/42/1742/4","commands":{"Branch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/4 \u0026\u0026 git checkout -b change-1742 FETCH_HEAD","Checkout":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://gerrit.openvpn.net/openvpn refs/changes/42/1742/4","Reset To":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/4 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"225628306ecc72d5b7b06c16d88ac5f271e56b89","subject":"oob: Add control message TLV encoding (P_CONTROL_OOB_V1)"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-06-18 12:15:00.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-09 13:35:11.000000000","tz":180},"subject":"oob: Add SERVER_PROBE parsing and the probe-reply decision","message":"oob: Add SERVER_PROBE parsing and the probe-reply decision\n\nAdd the message-level helpers the server needs to answer a probe:\n\n  - oob_server_probe_read() scans the TLV payload of a received OOB\n    SERVER_PROBE for the probe_parameter TLV, skipping other/future TLV\n    types and rejecting malformed or truncated input.\n  - oob_timestamp_in_window() performs the cheap replay/skew check on the\n    probe timestamp described in the wire protocol specification.\n  - oob_build_probe_reply() composes the two: given a received SERVER_PROBE\n    it scans for the probe_parameter, drops the probe if it is missing or\n    its timestamp is outside the acceptable window, and otherwise populates\n    the probe_reply (echoing the peer\u0027s session id) to send back.\n\nThese are pure functions exercised by unit tests; the server packet path\ncalls oob_build_probe_reply() in a follow-up, which performs the actual send.\n\nChange-Id: Iafa9efc1c156974ad9f5752e9de810a8c2f68c30\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"},"b2e734dd72115224804396a3de2eaa19fdae2aa3":{"kind":"NO_CHANGE","_number":5,"created":"2026-07-14 08:14:41.000000000","uploader":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"ref":"refs/changes/42/1742/5","fetch":{"anonymous http":{"url":"https://gerrit.openvpn.net/openvpn","ref":"refs/changes/42/1742/5","commands":{"Branch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/5 \u0026\u0026 git checkout -b change-1742 FETCH_HEAD","Checkout":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://gerrit.openvpn.net/openvpn refs/changes/42/1742/5","Reset To":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/5 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"c4295099dc8fd4fa59a96d0842107060f030ea02","subject":"oob: Add control message TLV encoding (P_CONTROL_OOB_V1)"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-06-18 12:15:00.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-14 08:13:52.000000000","tz":180},"subject":"oob: Add SERVER_PROBE parsing and the probe-reply decision","message":"oob: Add SERVER_PROBE parsing and the probe-reply decision\n\nAdd the message-level helpers the server needs to answer a probe:\n\n  - oob_server_probe_read() scans the TLV payload of a received OOB\n    SERVER_PROBE for the probe_parameter TLV, skipping other/future TLV\n    types and rejecting malformed or truncated input.\n  - oob_timestamp_in_window() performs the cheap replay/skew check on the\n    probe timestamp described in the wire protocol specification.\n  - oob_build_probe_reply() composes the two: given a received SERVER_PROBE\n    it scans for the probe_parameter, drops the probe if it is missing or\n    its timestamp is outside the acceptable window, and otherwise populates\n    the probe_reply (echoing the peer\u0027s session id) to send back.\n\nThese are pure functions exercised by unit tests; the server packet path\ncalls oob_build_probe_reply() in a follow-up, which performs the actual send.\n\nChange-Id: Iafa9efc1c156974ad9f5752e9de810a8c2f68c30\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"},"695c9932ce698720d4adee3af6d7b4cf521f547c":{"kind":"TRIVIAL_REBASE","_number":6,"created":"2026-07-14 12:32:24.000000000","uploader":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"ref":"refs/changes/42/1742/6","fetch":{"anonymous http":{"url":"https://gerrit.openvpn.net/openvpn","ref":"refs/changes/42/1742/6","commands":{"Branch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/6 \u0026\u0026 git checkout -b change-1742 FETCH_HEAD","Checkout":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://gerrit.openvpn.net/openvpn refs/changes/42/1742/6","Reset To":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/6 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"6765a12048ceb22573f03919163cfe679c406da6","subject":"oob: Add control message TLV encoding (P_CONTROL_OOB_V1)"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-06-18 12:15:00.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-14 12:14:32.000000000","tz":180},"subject":"oob: Add SERVER_PROBE parsing and the probe-reply decision","message":"oob: Add SERVER_PROBE parsing and the probe-reply decision\n\nAdd the message-level helpers the server needs to answer a probe:\n\n  - oob_server_probe_read() scans the TLV payload of a received OOB\n    SERVER_PROBE for the probe_parameter TLV, skipping other/future TLV\n    types and rejecting malformed or truncated input.\n  - oob_timestamp_in_window() performs the cheap replay/skew check on the\n    probe timestamp described in the wire protocol specification.\n  - oob_build_probe_reply() composes the two: given a received SERVER_PROBE\n    it scans for the probe_parameter, drops the probe if it is missing or\n    its timestamp is outside the acceptable window, and otherwise populates\n    the probe_reply (echoing the peer\u0027s session id) to send back.\n\nThese are pure functions exercised by unit tests; the server packet path\ncalls oob_build_probe_reply() in a follow-up, which performs the actual send.\n\nChange-Id: Iafa9efc1c156974ad9f5752e9de810a8c2f68c30\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"},"341208223ac405eb0e06a049255f4923dac766bd":{"kind":"TRIVIAL_REBASE","_number":7,"created":"2026-07-16 08:09:01.000000000","uploader":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"ref":"refs/changes/42/1742/7","fetch":{"anonymous http":{"url":"https://gerrit.openvpn.net/openvpn","ref":"refs/changes/42/1742/7","commands":{"Branch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/7 \u0026\u0026 git checkout -b change-1742 FETCH_HEAD","Checkout":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/7 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/7 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/7 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://gerrit.openvpn.net/openvpn refs/changes/42/1742/7","Reset To":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/7 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"51378748df89363371f6b13cb0f78ea9fa38d5bc","subject":"oob: Add control message TLV encoding (P_CONTROL_OOB_V1)"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-06-18 12:15:00.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-16 08:08:35.000000000","tz":180},"subject":"oob: Add SERVER_PROBE parsing and the probe-reply decision","message":"oob: Add SERVER_PROBE parsing and the probe-reply decision\n\nAdd the message-level helpers the server needs to answer a probe:\n\n  - oob_server_probe_read() scans the TLV payload of a received OOB\n    SERVER_PROBE for the probe_parameter TLV, skipping other/future TLV\n    types and rejecting malformed or truncated input.\n  - oob_timestamp_in_window() performs the cheap replay/skew check on the\n    probe timestamp described in the wire protocol specification.\n  - oob_build_probe_reply() composes the two: given a received SERVER_PROBE\n    it scans for the probe_parameter, drops the probe if it is missing or\n    its timestamp is outside the acceptable window, and otherwise populates\n    the probe_reply (echoing the peer\u0027s session id) to send back.\n\nThese are pure functions exercised by unit tests; the server packet path\ncalls oob_build_probe_reply() in a follow-up, which performs the actual send.\n\nChange-Id: Iafa9efc1c156974ad9f5752e9de810a8c2f68c30\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"},"2e79a47e4bad09cf3952c4df0be13742908f2437":{"kind":"REWORK","_number":8,"created":"2026-07-21 12:35:24.000000000","uploader":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"ref":"refs/changes/42/1742/8","fetch":{"anonymous http":{"url":"https://gerrit.openvpn.net/openvpn","ref":"refs/changes/42/1742/8","commands":{"Branch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/8 \u0026\u0026 git checkout -b change-1742 FETCH_HEAD","Checkout":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/8 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/8 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/8 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://gerrit.openvpn.net/openvpn refs/changes/42/1742/8","Reset To":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/8 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"4e332039301865b4061702bc2d6b622d0691ee60","subject":"oob: Add control message TLV encoding (P_CONTROL_OOB_V1)"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-06-18 12:15:00.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-21 12:30:44.000000000","tz":180},"subject":"oob: Add SERVER_PROBE parsing and the probe-reply decision","message":"oob: Add SERVER_PROBE parsing and the probe-reply decision\n\nAdd the message-level helpers the server needs to answer a probe:\n\n  - oob_server_probe_read() scans the TLV payload of a received OOB\n    SERVER_PROBE for the probe_parameter TLV, skipping other/future TLV\n    types and rejecting malformed or truncated input.\n  - oob_timestamp_in_window() performs the cheap replay/skew check on the\n    probe timestamp described in the wire protocol specification.\n  - oob_build_probe_reply() composes the two: given a received SERVER_PROBE\n    it scans for the probe_parameter, drops the probe if it is missing or\n    its timestamp is outside the acceptable window, and otherwise populates\n    the probe_reply (echoing the peer\u0027s session id) to send back.\n\nThese are pure functions exercised by unit tests; the server packet path\ncalls oob_build_probe_reply() in a follow-up, which performs the actual send.\n\nChange-Id: Iafa9efc1c156974ad9f5752e9de810a8c2f68c30\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"},"a342918fab203bb635bcb53c314871e141eeb4d4":{"kind":"REWORK","_number":9,"created":"2026-07-28 15:03:23.000000000","uploader":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"ref":"refs/changes/42/1742/9","fetch":{"anonymous http":{"url":"https://gerrit.openvpn.net/openvpn","ref":"refs/changes/42/1742/9","commands":{"Branch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/9 \u0026\u0026 git checkout -b change-1742 FETCH_HEAD","Checkout":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/9 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/9 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/9 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://gerrit.openvpn.net/openvpn refs/changes/42/1742/9","Reset To":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/9 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"a86807f8ff487d67889bf8747327e6311aeba99f","subject":"oob: Add control message TLV encoding (P_CONTROL_OOB_V1)"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-06-18 12:15:00.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-28 14:46:37.000000000","tz":180},"subject":"oob: Add SERVER_PROBE parsing and the probe-reply decision","message":"oob: Add SERVER_PROBE parsing and the probe-reply decision\n\nAdd the message-level helpers the server needs to answer a probe:\n\n  - oob_server_probe_read() scans the TLV payload of a received OOB\n    SERVER_PROBE for the probe_parameter TLV, skipping other/future TLV\n    types and rejecting malformed or truncated input.\n  - oob_timestamp_in_window() performs the cheap replay/skew check on the\n    probe timestamp described in the wire protocol specification.\n  - oob_build_probe_reply() composes the two: given a received SERVER_PROBE\n    it scans for the probe_parameter, drops the probe if it is missing or\n    its timestamp is outside the acceptable window, and otherwise populates\n    the probe_reply (echoing the peer\u0027s session id) to send back.\n\nThese are pure functions exercised by unit tests; the server packet path\ncalls oob_build_probe_reply() in a follow-up, which performs the actual send.\n\nChange-Id: Iafa9efc1c156974ad9f5752e9de810a8c2f68c30\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"},"d55580f6aab38e65976ed4b7f53359bbce443d71":{"kind":"NO_CODE_CHANGE","_number":10,"created":"2026-07-29 12:22:54.000000000","uploader":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"ref":"refs/changes/42/1742/10","fetch":{"anonymous http":{"url":"https://gerrit.openvpn.net/openvpn","ref":"refs/changes/42/1742/10","commands":{"Branch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/10 \u0026\u0026 git checkout -b change-1742 FETCH_HEAD","Checkout":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/10 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/10 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/10 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://gerrit.openvpn.net/openvpn refs/changes/42/1742/10","Reset To":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/10 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"b071e452e7d1711314c2d583ade5ee5d2b21371c","subject":"oob: Add control message TLV encoding (P_CONTROL_OOB_V1)"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-06-18 12:15:00.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-29 11:04:16.000000000","tz":180},"subject":"oob: Add SERVER_PROBE parsing and the probe-reply decision","message":"oob: Add SERVER_PROBE parsing and the probe-reply decision\n\nAdd the message-level helpers the server needs to answer a probe:\n\n  - oob_server_probe_write() writes a SERVER_PROBE (message-type header +\n    probe_parameter TLV); the client uses it later.\n  - oob_server_probe_read() scans the TLV payload of a received OOB\n    SERVER_PROBE for the probe_parameter TLV, skipping other/future TLV\n    types and rejecting malformed or truncated input.\n  - oob_timestamp_in_window() performs the cheap replay/skew check on the\n    probe timestamp described in the wire protocol specification.\n  - oob_build_probe_reply() composes the two: given a received SERVER_PROBE\n    it scans for the probe_parameter, drops the probe if it is missing or\n    its timestamp is outside the acceptable window, and otherwise populates\n    the probe_reply (echoing the peer\u0027s session id) to send back.\n\nA probe whose timestamp falls outside the window is dropped without a reply,\nwhich is what the spec allows: the timestamp is there so a server may silently\ndrop requests outside an acceptable window and reduce the replay attack surface.\nThe window itself is the caller\u0027s choice; the server path passes --hand-window in\na follow-up.\n\nThese are pure functions exercised by unit tests; the server packet path\ncalls oob_build_probe_reply() in a follow-up, which performs the actual send.\n\nChange-Id: Iafa9efc1c156974ad9f5752e9de810a8c2f68c30\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"},"0d141af5a5aa3ee5d9cc22051e33acdd2523c4bb":{"kind":"TRIVIAL_REBASE","_number":11,"created":"2026-08-04 08:10:28.000000000","uploader":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"ref":"refs/changes/42/1742/11","fetch":{"anonymous http":{"url":"https://gerrit.openvpn.net/openvpn","ref":"refs/changes/42/1742/11","commands":{"Branch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/11 \u0026\u0026 git checkout -b change-1742 FETCH_HEAD","Checkout":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/11 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/11 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/11 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://gerrit.openvpn.net/openvpn refs/changes/42/1742/11","Reset To":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/11 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"f33459944a289b5b87b6d11dd141b073f3841626","subject":"oob: Add control message TLV encoding (P_CONTROL_OOB_V1)"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-06-18 12:15:00.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-08-04 08:08:32.000000000","tz":180},"subject":"oob: Add SERVER_PROBE parsing and the probe-reply decision","message":"oob: Add SERVER_PROBE parsing and the probe-reply decision\n\nAdd the message-level helpers the server needs to answer a probe:\n\n  - oob_server_probe_write() writes a SERVER_PROBE (message-type header +\n    probe_parameter TLV); the client uses it later.\n  - oob_server_probe_read() scans the TLV payload of a received OOB\n    SERVER_PROBE for the probe_parameter TLV, skipping other/future TLV\n    types and rejecting malformed or truncated input.\n  - oob_timestamp_in_window() performs the cheap replay/skew check on the\n    probe timestamp described in the wire protocol specification.\n  - oob_build_probe_reply() composes the two: given a received SERVER_PROBE\n    it scans for the probe_parameter, drops the probe if it is missing or\n    its timestamp is outside the acceptable window, and otherwise populates\n    the probe_reply (echoing the peer\u0027s session id) to send back.\n\nA probe whose timestamp falls outside the window is dropped without a reply,\nwhich is what the spec allows: the timestamp is there so a server may silently\ndrop requests outside an acceptable window and reduce the replay attack surface.\nThe window itself is the caller\u0027s choice; the server path passes --hand-window in\na follow-up.\n\nThese are pure functions exercised by unit tests; the server packet path\ncalls oob_build_probe_reply() in a follow-up, which performs the actual send.\n\nChange-Id: Iafa9efc1c156974ad9f5752e9de810a8c2f68c30\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"},"8a45bcacebf903eea3c03773a73159560a6ea3ee":{"kind":"REWORK","_number":12,"created":"2026-08-28 12:51:00.000000000","uploader":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"ref":"refs/changes/42/1742/12","fetch":{"anonymous http":{"url":"https://gerrit.openvpn.net/openvpn","ref":"refs/changes/42/1742/12","commands":{"Branch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/12 \u0026\u0026 git checkout -b change-1742 FETCH_HEAD","Checkout":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/12 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/12 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/12 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://gerrit.openvpn.net/openvpn refs/changes/42/1742/12","Reset To":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/12 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"b401b0989fda78f36449073f3b64df9900d21bc5","subject":"oob: Add control message TLV encoding (P_CONTROL_OOB_V1)"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-06-18 12:15:00.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-08-28 11:20:58.000000000","tz":180},"subject":"oob: Add SERVER_PROBE parsing and the probe-reply decision","message":"oob: Add SERVER_PROBE parsing and the probe-reply decision\n\nAdd the message-level helpers the server needs to answer a probe:\n\n  - oob_server_probe_write() writes a SERVER_PROBE (message-type header +\n    probe_parameter TLV); the client uses it later.\n  - oob_server_probe_read() scans the TLV payload of a received OOB\n    SERVER_PROBE for the probe_parameter TLV, skipping other/future TLV\n    types that are marked optional, and rejecting malformed or truncated\n    input as well as a mandatory TLV it does not understand.\n  - oob_timestamp_in_window() performs the cheap replay/skew check on the\n    probe timestamp described in the wire protocol specification.\n  - oob_build_probe_reply() composes the two: given a received SERVER_PROBE\n    it scans for the probe_parameter, drops the probe if it is missing or\n    its timestamp is outside the acceptable window, and otherwise populates\n    the probe_reply (echoing the peer\u0027s session id) to send back.\n\nA probe whose timestamp falls outside the window is dropped without a reply,\nwhich is what the spec allows: the timestamp is there so a server may silently\ndrop requests outside an acceptable window and reduce the replay attack surface.\nThe window itself is the caller\u0027s choice; the server path passes --hand-window in\na follow-up.\n\nThese are pure functions exercised by unit tests; the server packet path\ncalls oob_build_probe_reply() in a follow-up, which performs the actual send.\n\nChange-Id: Iafa9efc1c156974ad9f5752e9de810a8c2f68c30\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"},"8cf9b7955aa320f7fb32dd205689c8c577bf4b43":{"kind":"REWORK","_number":13,"created":"2026-09-09 07:27:02.000000000","uploader":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"ref":"refs/changes/42/1742/13","fetch":{"anonymous http":{"url":"https://gerrit.openvpn.net/openvpn","ref":"refs/changes/42/1742/13","commands":{"Branch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/13 \u0026\u0026 git checkout -b change-1742 FETCH_HEAD","Checkout":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/13 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/13 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/13 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://gerrit.openvpn.net/openvpn refs/changes/42/1742/13","Reset To":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/13 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"8285b3457f16c633f8971cc5725dd4b48e718cf3","subject":"oob: Add control message TLV encoding (P_CONTROL_OOB_V1)"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-06-18 12:15:00.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-09-08 12:49:25.000000000","tz":180},"subject":"oob: Add SERVER_PROBE parsing and the probe-reply decision","message":"oob: Add SERVER_PROBE parsing and the probe-reply decision\n\nAdd the message-level helpers the server needs to answer a probe:\n\n  - oob_server_probe_write() writes a SERVER_PROBE (message-type header +\n    probe_parameter TLV); the client uses it later.\n  - oob_server_probe_read() scans the TLV payload of a received OOB\n    SERVER_PROBE for the probe_parameter TLV, skipping other/future TLV\n    types that are marked optional, and rejecting malformed or truncated\n    input as well as a mandatory TLV it does not understand.\n  - oob_timestamp_in_window() performs the cheap replay/skew check on the\n    probe timestamp described in the wire protocol specification.\n  - oob_server_probe_accept() combines the two: given a received SERVER_PROBE\n    it scans for the probe_parameter and accepts the probe unless that is\n    missing or its timestamp is outside the acceptable window. It reads the\n    probe and nothing else; the reply is the caller\u0027s to build.\n\nA probe whose timestamp falls outside the window is dropped without a reply,\nwhich is what the spec allows: the timestamp is there so a server may silently\ndrop requests outside an acceptable window and reduce the replay attack surface.\nThe window itself is the caller\u0027s choice; the server path passes --hand-window in\na follow-up.\n\nThese are pure functions exercised by unit tests; the server packet path\ncalls oob_server_probe_accept() in a follow-up, which builds and sends the\nreply.\n\nChange-Id: Iafa9efc1c156974ad9f5752e9de810a8c2f68c30\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"},"21a93d5823d18cf501738360450ae56c0574b5bd":{"kind":"TRIVIAL_REBASE_WITH_MESSAGE_UPDATE","_number":14,"created":"2026-09-11 09:11:03.000000000","uploader":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"ref":"refs/changes/42/1742/14","fetch":{"anonymous http":{"url":"https://gerrit.openvpn.net/openvpn","ref":"refs/changes/42/1742/14","commands":{"Branch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/14 \u0026\u0026 git checkout -b change-1742 FETCH_HEAD","Checkout":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/14 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/14 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/14 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://gerrit.openvpn.net/openvpn refs/changes/42/1742/14","Reset To":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/14 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"3bac555932e1cfb6ad53d746980a72e377391c83","subject":"oob: Add control message TLV encoding (P_CONTROL_OOB_V1)"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-06-18 12:15:00.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-09-11 09:03:49.000000000","tz":180},"subject":"oob: Add SERVER_PROBE parsing and the probe-reply decision","message":"oob: Add SERVER_PROBE parsing and the probe-reply decision\n\nAdd the message-level helpers the server needs to answer a probe:\n\n  - oob_server_probe_write() writes a SERVER_PROBE (message-type header\n    + probe_parameter TLV); the client uses it later.\n  - oob_server_probe_read() scans the TLV payload of a received OOB\n    SERVER_PROBE for the probe_parameter TLV, skipping other/future TLV\n    types that are marked optional, and rejecting malformed or truncated\n    input as well as a mandatory TLV it does not understand.\n  - oob_timestamp_in_window() performs the cheap replay/skew check on\n    the probe timestamp described in the wire protocol specification.\n  - oob_server_probe_accept() combines the two: given a received\n    SERVER_PROBE it scans for the probe_parameter and accepts the probe\n    unless that is missing or its timestamp is outside the acceptable\n    window. It reads the probe and nothing else; the reply is the\n    caller\u0027s to build.\n\nA probe whose timestamp falls outside the window is dropped without a\nreply, which is what the spec allows: the timestamp is there so a server\nmay silently drop requests outside an acceptable window and reduce the\nreplay attack surface. The window itself is the caller\u0027s choice; the\nserver path passes --hand-window in a follow-up.\n\nThese are pure functions exercised by unit tests; the server packet path\ncalls oob_server_probe_accept() in a follow-up and builds and sends the\nreply itself.\n\nChange-Id: Iafa9efc1c156974ad9f5752e9de810a8c2f68c30\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"},"59a6b578f3df7a070b2b213db4f5a1e75a4dc416":{"kind":"TRIVIAL_REBASE_WITH_MESSAGE_UPDATE","_number":15,"created":"2026-09-14 14:18:32.000000000","uploader":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"ref":"refs/changes/42/1742/15","fetch":{"anonymous http":{"url":"https://gerrit.openvpn.net/openvpn","ref":"refs/changes/42/1742/15","commands":{"Branch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/15 \u0026\u0026 git checkout -b change-1742 FETCH_HEAD","Checkout":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/15 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/15 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/15 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://gerrit.openvpn.net/openvpn refs/changes/42/1742/15","Reset To":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/15 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"3f8217314124701400cb9ce525071943a373e780","subject":"oob: Add control message TLV encoding (P_CONTROL_OOB_V1)"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-06-18 12:15:00.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-09-14 08:10:54.000000000","tz":180},"subject":"oob: Add SERVER_PROBE parsing and the probe-reply decision","message":"oob: Add SERVER_PROBE parsing and the probe-reply decision\r\n\r\nAdd the message-level helpers the server needs to answer a probe:\r\n\r\n  - oob_server_probe_write() writes a SERVER_PROBE (message-type header\r\n    + probe_parameter TLV); the client uses it later.\r\n  - oob_server_probe_read() scans the TLV payload of a received OOB\r\n    SERVER_PROBE for the probe_parameter TLV, skipping other/future TLV\r\n    types that are marked optional, and rejecting malformed or truncated\r\n    input as well as a mandatory TLV it does not understand.\r\n  - oob_timestamp_in_window() performs the cheap replay/skew check on\r\n    the probe timestamp described in the wire protocol specification.\r\n  - oob_server_probe_accept() combines the two: given a received\r\n    SERVER_PROBE it scans for the probe_parameter and accepts the probe\r\n    unless that is missing or its timestamp is outside the acceptable\r\n    window. It reads the probe and nothing else; the reply is the\r\n    caller\u0027s to build.\r\n\r\nA probe whose timestamp falls outside the window is dropped without a\r\nreply, which is what the spec allows: the timestamp is there so a server\r\nmay silently drop requests outside an acceptable window and reduce the\r\nreplay attack surface. The window itself is the caller\u0027s choice; the\r\nserver path passes --hand-window in a follow-up.\r\n\r\nThese are pure functions exercised by unit tests; the server packet path\r\ncalls oob_server_probe_accept() in a follow-up and builds and sends the\r\nreply itself.\r\n\r\nChange-Id: Iafa9efc1c156974ad9f5752e9de810a8c2f68c30\r\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\r\n"},"branch":"refs/heads/master"},"ec37a5e65da7ada1e6e470eaa6af7c187a3da8bf":{"kind":"REWORK","_number":16,"created":"2026-09-17 07:01:11.000000000","uploader":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"ref":"refs/changes/42/1742/16","fetch":{"anonymous http":{"url":"https://gerrit.openvpn.net/openvpn","ref":"refs/changes/42/1742/16","commands":{"Branch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/16 \u0026\u0026 git checkout -b change-1742 FETCH_HEAD","Checkout":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/16 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/16 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/16 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://gerrit.openvpn.net/openvpn refs/changes/42/1742/16","Reset To":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/16 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"5b1e911f450ab09703cf02f50846d58bf66fbaeb","subject":"oob: Add control message TLV encoding (P_CONTROL_OOB_V1)"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-06-18 12:15:00.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-09-17 06:48:10.000000000","tz":180},"subject":"oob: Add SERVER_PROBE parsing and the probe-reply decision","message":"oob: Add SERVER_PROBE parsing and the probe-reply decision\n\nAdd the message-level helpers the server needs to answer a probe:\n\n  - oob_server_probe_write() writes a SERVER_PROBE (message-type header\n    + probe_parameter TLV); the client uses it later.\n  - oob_server_probe_read() scans the TLV payload of a received OOB\n    SERVER_PROBE for the probe_parameter TLV, skipping other/future TLV\n    types that are marked optional, and rejecting malformed or truncated\n    input as well as a mandatory TLV it does not understand.\n  - oob_timestamp_in_window() performs the cheap replay/skew check on\n    the probe timestamp described in the wire protocol specification.\n  - oob_server_probe_accept() combines the two: given a received\n    SERVER_PROBE it scans for the probe_parameter and accepts the probe\n    unless that is missing or its timestamp is outside the acceptable\n    window. It reads the probe and nothing else; the reply is the\n    caller\u0027s to build.\n\nA probe whose timestamp falls outside the window is dropped without a\nreply, which is what the spec allows: the timestamp is there so a server\nmay silently drop requests outside an acceptable window and reduce the\nreplay attack surface. The window itself is the caller\u0027s choice; the\nserver path passes --hand-window in a follow-up.\n\nThese are pure functions exercised by unit tests; the server packet path\ncalls oob_server_probe_accept() in a follow-up and builds and sends the\nreply itself.\n\nChange-Id: Iafa9efc1c156974ad9f5752e9de810a8c2f68c30\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"},"caff45b39c8172a2ae51c446d79e48effcc1ce7c":{"kind":"REWORK","_number":17,"created":"2026-09-18 08:31:39.000000000","uploader":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"ref":"refs/changes/42/1742/17","fetch":{"anonymous http":{"url":"https://gerrit.openvpn.net/openvpn","ref":"refs/changes/42/1742/17","commands":{"Branch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/17 \u0026\u0026 git checkout -b change-1742 FETCH_HEAD","Checkout":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/17 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/17 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/17 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://gerrit.openvpn.net/openvpn refs/changes/42/1742/17","Reset To":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/17 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"ffa8097cbd669f623a93dd9b368ffb776ae60d2e","subject":"oob: Add control message TLV encoding (P_CONTROL_OOB_V1)"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-06-18 12:15:00.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-09-18 08:26:41.000000000","tz":180},"subject":"oob: Add SERVER_PROBE parsing and the probe-reply decision","message":"oob: Add SERVER_PROBE parsing and the probe-reply decision\n\nAdd the message-level helpers the server needs to answer a probe:\n\n  - oob_server_probe_write() writes a SERVER_PROBE (message-type header\n    + probe_parameter TLV); the client uses it later.\n  - oob_server_probe_read() scans the TLV payload of a received OOB\n    SERVER_PROBE for the probe_parameter TLV, skipping other/future TLV\n    types that are marked optional, and rejecting malformed or truncated\n    input as well as a mandatory TLV it does not understand.\n  - oob_timestamp_in_window() performs the cheap replay/skew check on\n    the probe timestamp described in the wire protocol specification.\n  - oob_server_probe_accept() combines the two: given a received\n    SERVER_PROBE it scans for the probe_parameter and accepts the probe\n    unless that is missing or its timestamp is outside the acceptable\n    window. It reads the probe and nothing else; the reply is the\n    caller\u0027s to build.\n\nA probe whose timestamp falls outside the window is dropped without a\nreply, which is what the spec allows: the timestamp is there so a server\nmay silently drop requests outside an acceptable window and reduce the\nreplay attack surface. The window itself is the caller\u0027s choice; the\nserver path passes --hand-window in a follow-up.\n\nThese are pure functions exercised by unit tests; the server packet path\ncalls oob_server_probe_accept() in a follow-up and builds and sends the\nreply itself.\n\nChange-Id: Iafa9efc1c156974ad9f5752e9de810a8c2f68c30\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"},"ccc37cf08d2a5c5c96443e43deb35051a7cdb115":{"kind":"REWORK","_number":18,"created":"2026-09-29 13:16:31.000000000","uploader":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"ref":"refs/changes/42/1742/18","fetch":{"anonymous http":{"url":"https://gerrit.openvpn.net/openvpn","ref":"refs/changes/42/1742/18","commands":{"Branch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/18 \u0026\u0026 git checkout -b change-1742 FETCH_HEAD","Checkout":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/18 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/18 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/18 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://gerrit.openvpn.net/openvpn refs/changes/42/1742/18","Reset To":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/18 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"842942c1351f98633602bb39d6f0ad183ebcfe36","subject":"oob: Add control message TLV encoding (P_CONTROL_OOB_V1)"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-06-18 12:15:00.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-09-29 13:05:04.000000000","tz":180},"subject":"oob: Add SERVER_PROBE parsing and the probe-reply decision","message":"oob: Add SERVER_PROBE parsing and the probe-reply decision\n\nAdd the message-level helpers the server needs to answer a probe:\noob_server_probe_read() for the SERVER_PROBE message,\noob_timestamp_in_window() for the replay/skew check on its timestamp,\nand oob_server_probe_check(), which combines the two and classifies a\nreceived probe as invalid, stale or OK.\n\nThe reader returns the probe request, whose request_id the reply\nechoes, so a client can tell which of its probes a reply answers.\n\nA stale probe, one whose timestamp is outside the window, is reported\nseparately rather than dropped: the timestamp lets a server drop\nreplayed requests, but a client with a skewed clock sends the same\nthing, so the server path decides (a follow-up answers a few per\nperiod). The window itself is the caller\u0027s choice; the server path\npasses --hand-window.\n\nThese are pure functions exercised by unit tests; the server packet\npath uses them in a follow-up and builds and sends the reply itself.\n\nChange-Id: Iafa9efc1c156974ad9f5752e9de810a8c2f68c30\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"},"970640f977539543ecd8fe58ab07cc900cc4669e":{"kind":"REWORK","_number":19,"created":"2026-09-30 08:25:29.000000000","uploader":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"ref":"refs/changes/42/1742/19","fetch":{"anonymous http":{"url":"https://gerrit.openvpn.net/openvpn","ref":"refs/changes/42/1742/19","commands":{"Branch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/19 \u0026\u0026 git checkout -b change-1742 FETCH_HEAD","Checkout":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/19 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/19 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/19 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://gerrit.openvpn.net/openvpn refs/changes/42/1742/19","Reset To":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/19 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"9b66f9d7f01932ff34ea618d1557b7cbee7ca158","subject":"oob: Add P_CONTROL_OOB_V1 and the probe request and reply TLVs"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-06-18 12:15:00.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-09-30 08:13:01.000000000","tz":180},"subject":"oob: Add probe request parsing and the probe-reply decision","message":"oob: Add probe request parsing and the probe-reply decision\n\nAdd the message-level helpers the server needs to answer a probe:\noob_probe_request_find() for the probe request TLV,\noob_timestamp_in_window() for the replay/skew check on its timestamp,\nand oob_probe_request_check(), which combines the two and classifies a\nreceived probe as invalid, stale or OK.\n\nThe reader returns the probe request, whose request_id the reply\nechoes, so a client can tell which of its probes a reply answers.\n\nA stale probe, one whose timestamp is outside the window, is reported\nseparately rather than dropped: the timestamp lets a server drop\nreplayed requests, but a client with a skewed clock sends the same\nthing, so the server path decides (a follow-up answers a few per\nperiod). The window itself is the caller\u0027s choice; the server path\npasses --hand-window.\n\nThese are pure functions exercised by unit tests; the server packet\npath uses them in a follow-up and builds and sends the reply itself.\n\nChange-Id: Iafa9efc1c156974ad9f5752e9de810a8c2f68c30\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"},"653260954600e160459fcfe677583bcb99e55a98":{"kind":"TRIVIAL_REBASE","_number":20,"created":"2026-09-30 20:19:52.000000000","uploader":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"ref":"refs/changes/42/1742/20","fetch":{"anonymous http":{"url":"https://gerrit.openvpn.net/openvpn","ref":"refs/changes/42/1742/20","commands":{"Branch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/20 \u0026\u0026 git checkout -b change-1742 FETCH_HEAD","Checkout":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/20 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/20 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/20 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://gerrit.openvpn.net/openvpn refs/changes/42/1742/20","Reset To":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/42/1742/20 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"e3fc273fd285d76d4e1d590ace37158a1d4fc364","subject":"oob: Add P_CONTROL_OOB_V1 and the probe request and reply TLVs"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-06-18 12:15:00.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-09-30 18:15:02.000000000","tz":180},"subject":"oob: Add probe request parsing and the probe-reply decision","message":"oob: Add probe request parsing and the probe-reply decision\n\nAdd the message-level helpers the server needs to answer a probe:\noob_probe_request_find() for the probe request TLV,\noob_timestamp_in_window() for the replay/skew check on its timestamp,\nand oob_probe_request_check(), which combines the two and classifies a\nreceived probe as invalid, stale or OK.\n\nThe reader returns the probe request, whose request_id the reply\nechoes, so a client can tell which of its probes a reply answers.\n\nA stale probe, one whose timestamp is outside the window, is reported\nseparately rather than dropped: the timestamp lets a server drop\nreplayed requests, but a client with a skewed clock sends the same\nthing, so the server path decides (a follow-up answers a few per\nperiod). The window itself is the caller\u0027s choice; the server path\npasses --hand-window.\n\nThese are pure functions exercised by unit tests; the server packet\npath uses them in a follow-up and builds and sends the reply itself.\n\nChange-Id: Iafa9efc1c156974ad9f5752e9de810a8c2f68c30\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"}},"requirements":[{"status":"NOT_READY","fallback_text":"All required checks must pass","type":"checks_pass"}],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"NOT_READY","labels":[{"label":"Code-Review","status":"REJECT","applied_by":{"_account_id":1000003,"name":"Arne Schwabe","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"}}]},{"rule_name":"checks~ChecksSubmitRule","status":"NOT_READY","requirements":[{"status":"NOT_READY","fallback_text":"All required checks must pass","type":"checks_pass"}]}]}
