)]}'
{"id":"openvpn~1746","triplet_id":"openvpn~master~I55da68cc341bcfc707fd34ca2f84ff9b6a55501f","project":"openvpn","branch":"master","attention_set":{"1000003":{"account":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"last_update":"2026-06-29 07:58:38.000000000","reason":"Reviewer was added"}},"removed_from_attention_set":{},"hashtags":[],"change_id":"I55da68cc341bcfc707fd34ca2f84ff9b6a55501f","subject":"oob: Add probe-result ranking for server selection","status":"NEW","created":"2026-06-29 07:58:31.000000000","updated":"2026-07-02 12:30:33.000000000","submit_type":"CHERRY_PICK","submittable":false,"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"035698da2ed63c23084a3c09d10d7a7fd53f2469","_number":1746,"virtual_id_number":1746,"owner":{"_account_id":1000008,"name":"stipa","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"actions":{},"labels":{"Code-Review":{"all":[{"value":0,"permitted_voting_range":{"min":-2,"max":2},"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"}],"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}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"}],"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:38.000000000","updated_by":{"_account_id":1000008,"name":"stipa","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:38.000000000","updated_by":{"_account_id":1000008,"name":"stipa","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"reviewer":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"state":"REVIEWER"}],"messages":[{"id":"cbeb6a654c451b8e9cb4686f0733876c155db355","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000008,"name":"stipa","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":"d67c16f6546ba363f1193340f87bd413b2dcbe68","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000008,"name":"stipa","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-06-29 12:08:26.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"7a6772c22bf40022345501071c7555fbfd6c3be2","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000008,"name":"stipa","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-06-29 12:37:47.000000000","message":"Uploaded patch set 3: Patch Set 2 was rebased.","accounts_in_message":[],"_revision_number":3},{"id":"035698da2ed63c23084a3c09d10d7a7fd53f2469","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000008,"name":"stipa","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-07-02 12:30:33.000000000","message":"Uploaded patch set 4: Patch Set 3 was rebased.","accounts_in_message":[],"_revision_number":4}],"current_revision_number":4,"current_revision":"4da7d4cdae1bef9d8fd6fb0c549756903743e2ba","revisions":{"07fcd8df66eb54dcfd0265176bfd9831304905b8":{"kind":"REWORK","_number":1,"created":"2026-06-29 07:58:31.000000000","uploader":{"_account_id":1000008,"name":"stipa","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"ref":"refs/changes/46/1746/1","fetch":{"anonymous http":{"url":"http://gerrit.openvpn.net/openvpn","ref":"refs/changes/46/1746/1","commands":{"Branch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/46/1746/1 \u0026\u0026 git checkout -b change-1746 FETCH_HEAD","Checkout":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/46/1746/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/46/1746/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/46/1746/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull http://gerrit.openvpn.net/openvpn refs/changes/46/1746/1","Reset To":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/46/1746/1 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"37dc5fef7fc916feb3d6c8b3ed6576111ddcc2f4","subject":"oob: Add client PROBE_REPLY parser"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-06-18 14:13:05.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-06-29 07:58:02.000000000","tz":180},"subject":"oob: Add probe-result ranking for server selection","message":"oob: Add probe-result ranking for server selection\n\nAdd oob_rank_probe_results(), which orders remotes best-first from their probe\nresults, following the DNS-SRV (RFC 2782) semantics of the probe_reply TLV:\n\n  - remotes that answered rank before those that did not (non-responders keep\n    their original relative order, last);\n  - responders are grouped by priority, lowest value first (an absolute\n    ordering, never overridden by latency or weight);\n  - within a priority group the \"candidates\" are the responders whose RTT is\n    within a margin of the fastest (see oob_effective_margin()); candidates\n    rank ahead of non-candidates;\n  - candidates are ordered by RFC-2782 weighted-random selection by weight, so\n    a server is chosen first with probability proportional to its weight (load\n    distribution); non-candidates follow, ordered by RTT.\n\nThe RNG is injected as a function pointer so this module stays free of the\ncrypto layer and the weighted ordering is deterministically unit-testable\n(production passes get_random; the tests pass stubs).\n\nRTT is only populated once the client measures it (a later commit); until then\nevery responder sits in the band and selection is purely weighted-random.\n\nChange-Id: I55da68cc341bcfc707fd34ca2f84ff9b6a55501f\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"},"52c7c6d63f22545538ec405c368ae9a7f58f34f6":{"kind":"REWORK","_number":2,"created":"2026-06-29 12:08:26.000000000","uploader":{"_account_id":1000008,"name":"stipa","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"ref":"refs/changes/46/1746/2","fetch":{"anonymous http":{"url":"http://gerrit.openvpn.net/openvpn","ref":"refs/changes/46/1746/2","commands":{"Branch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/46/1746/2 \u0026\u0026 git checkout -b change-1746 FETCH_HEAD","Checkout":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/46/1746/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/46/1746/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/46/1746/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull http://gerrit.openvpn.net/openvpn refs/changes/46/1746/2","Reset To":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/46/1746/2 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"37dc5fef7fc916feb3d6c8b3ed6576111ddcc2f4","subject":"oob: Add client PROBE_REPLY parser"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-06-18 14:13:05.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-06-29 11:45:13.000000000","tz":180},"subject":"oob: Add probe-result ranking for server selection","message":"oob: Add probe-result ranking for server selection\n\nAdd oob_rank_probe_results(), which orders remotes best-first from their probe\nresults, following the DNS-SRV (RFC 2782) semantics of the probe_reply TLV:\n\n  - remotes that answered rank before those that did not (non-responders keep\n    their original relative order, last);\n  - responders are grouped by priority, lowest value first (an absolute\n    ordering, never overridden by latency or weight);\n  - within a priority group the \"candidates\" are the responders whose RTT is\n    within a margin of the fastest (see oob_effective_margin()); candidates\n    rank ahead of non-candidates;\n  - candidates are ordered by RFC-2782 weighted-random selection by weight, so\n    a server is chosen first with probability proportional to its weight (load\n    distribution); non-candidates follow, ordered by RTT.\n\nThe RNG is injected as a function pointer so this module stays free of the\ncrypto layer and the weighted ordering is deterministically unit-testable\n(production passes get_random; the tests pass stubs).\n\nRTT is only populated once the client measures it (a later commit); until then\nevery responder sits in the band and selection is purely weighted-random.\n\nChange-Id: I55da68cc341bcfc707fd34ca2f84ff9b6a55501f\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"},"26683f003b3f61802a6b673e0f658126a7eee788":{"kind":"TRIVIAL_REBASE","_number":3,"created":"2026-06-29 12:37:47.000000000","uploader":{"_account_id":1000008,"name":"stipa","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"ref":"refs/changes/46/1746/3","fetch":{"anonymous http":{"url":"http://gerrit.openvpn.net/openvpn","ref":"refs/changes/46/1746/3","commands":{"Branch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/46/1746/3 \u0026\u0026 git checkout -b change-1746 FETCH_HEAD","Checkout":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/46/1746/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/46/1746/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/46/1746/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull http://gerrit.openvpn.net/openvpn refs/changes/46/1746/3","Reset To":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/46/1746/3 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"6f3764e878c1d299bf51a788716ac525ae71d6c1","subject":"oob: Add client PROBE_REPLY parser"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-06-18 14:13:05.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-06-29 12:32:06.000000000","tz":180},"subject":"oob: Add probe-result ranking for server selection","message":"oob: Add probe-result ranking for server selection\n\nAdd oob_rank_probe_results(), which orders remotes best-first from their probe\nresults, following the DNS-SRV (RFC 2782) semantics of the probe_reply TLV:\n\n  - remotes that answered rank before those that did not (non-responders keep\n    their original relative order, last);\n  - responders are grouped by priority, lowest value first (an absolute\n    ordering, never overridden by latency or weight);\n  - within a priority group the \"candidates\" are the responders whose RTT is\n    within a margin of the fastest (see oob_effective_margin()); candidates\n    rank ahead of non-candidates;\n  - candidates are ordered by RFC-2782 weighted-random selection by weight, so\n    a server is chosen first with probability proportional to its weight (load\n    distribution); non-candidates follow, ordered by RTT.\n\nThe RNG is injected as a function pointer so this module stays free of the\ncrypto layer and the weighted ordering is deterministically unit-testable\n(production passes get_random; the tests pass stubs).\n\nRTT is only populated once the client measures it (a later commit); until then\nevery responder sits in the band and selection is purely weighted-random.\n\nChange-Id: I55da68cc341bcfc707fd34ca2f84ff9b6a55501f\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"},"4da7d4cdae1bef9d8fd6fb0c549756903743e2ba":{"kind":"TRIVIAL_REBASE","_number":4,"created":"2026-07-02 12:30:33.000000000","uploader":{"_account_id":1000008,"name":"stipa","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"ref":"refs/changes/46/1746/4","fetch":{"anonymous http":{"url":"http://gerrit.openvpn.net/openvpn","ref":"refs/changes/46/1746/4","commands":{"Branch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/46/1746/4 \u0026\u0026 git checkout -b change-1746 FETCH_HEAD","Checkout":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/46/1746/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/46/1746/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/46/1746/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull http://gerrit.openvpn.net/openvpn refs/changes/46/1746/4","Reset To":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/46/1746/4 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"c0c4c8c7a403a33c6432af04dbcc01428cb751e1","subject":"oob: Add client PROBE_REPLY parser"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-06-18 14:13:05.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-02 12:11:48.000000000","tz":180},"subject":"oob: Add probe-result ranking for server selection","message":"oob: Add probe-result ranking for server selection\n\nAdd oob_rank_probe_results(), which orders remotes best-first from their probe\nresults, following the DNS-SRV (RFC 2782) semantics of the probe_reply TLV:\n\n  - remotes that answered rank before those that did not (non-responders keep\n    their original relative order, last);\n  - responders are grouped by priority, lowest value first (an absolute\n    ordering, never overridden by latency or weight);\n  - within a priority group the \"candidates\" are the responders whose RTT is\n    within a margin of the fastest (see oob_effective_margin()); candidates\n    rank ahead of non-candidates;\n  - candidates are ordered by RFC-2782 weighted-random selection by weight, so\n    a server is chosen first with probability proportional to its weight (load\n    distribution); non-candidates follow, ordered by RTT.\n\nThe RNG is injected as a function pointer so this module stays free of the\ncrypto layer and the weighted ordering is deterministically unit-testable\n(production passes get_random; the tests pass stubs).\n\nRTT is only populated once the client measures it (a later commit); until then\nevery responder sits in the band and selection is purely weighted-random.\n\nChange-Id: I55da68cc341bcfc707fd34ca2f84ff9b6a55501f\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"NOT_READY","labels":[{"label":"Code-Review","status":"NEED"}]},{"rule_name":"checks~ChecksSubmitRule","status":"OK"}],"submit_requirements":[{"name":"Code-Review","status":"UNSATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX -label:Code-Review\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Code-Review\u003dMAX","-label:Code-Review\u003dMIN"]}},{"name":"checks~ChecksSubmitRule","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"rule:checks~ChecksSubmitRule","fulfilled":true,"status":"PASS","passing_atoms":["checks~ChecksSubmitRule"],"failing_atoms":[]}}]}
