)]}'
{"id":"openvpn~1900","triplet_id":"openvpn~master~Iaaa0af7d678eb447bc93741add8120d9f348d9eb","project":"openvpn","branch":"master","full_branch":"refs/heads/master","attention_set":{},"removed_from_attention_set":{"1000053":{"account":{"_account_id":1000053,"name":"Răzvan Cojocaru","display_name":"Razvan Cojocaru","email":"razvanc@mailbox.org","username":"razvanc"},"last_update":"2026-10-11 15:58:45.000000000","reason":"Change was submitted"},"1000003":{"account":{"_account_id":1000003,"name":"Arne Schwabe","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"last_update":"2026-10-07 17:17:36.000000000","reason":"removed on reply"}},"hashtags":[],"change_id":"Iaaa0af7d678eb447bc93741add8120d9f348d9eb","subject":"reliable: drop the half-space packet id comparisons","status":"MERGED","created":"2026-09-07 07:23:01.000000000","updated":"2026-10-11 15:58:45.000000000","submitted":"2026-10-11 15:58:45.000000000","submitter":{"_account_id":1000002,"name":"Gert Doering","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"1900","meta_rev_id":"e63e67c5852a6ffd1aeed78cf8bb245af0af3ded","_number":1900,"virtual_id_number":1900,"owner":{"_account_id":1000053,"name":"Răzvan Cojocaru","display_name":"Razvan Cojocaru","email":"razvanc@mailbox.org","username":"razvanc"},"actions":{},"labels":{"Code-Review":{"all":[{"value":0,"_account_id":1000003,"name":"Arne Schwabe","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},{"value":0,"_account_id":1000002,"name":"Gert Doering","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"}],"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":"Arne Schwabe","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-09-07 07:23:02.000000000","updated_by":{"_account_id":1000053,"name":"Răzvan Cojocaru","display_name":"Razvan Cojocaru","email":"razvanc@mailbox.org","username":"razvanc"},"real_updated_by":{"_account_id":1000053,"name":"Răzvan Cojocaru","display_name":"Razvan Cojocaru","email":"razvanc@mailbox.org","username":"razvanc"},"reviewer":{"_account_id":1000026,"name":"openvpn-devel","email":"openvpn-devel@lists.sourceforge.net","username":"openvpn-devel"},"state":"CC"},{"updated":"2026-09-07 07:23:02.000000000","updated_by":{"_account_id":1000053,"name":"Răzvan Cojocaru","display_name":"Razvan Cojocaru","email":"razvanc@mailbox.org","username":"razvanc"},"real_updated_by":{"_account_id":1000053,"name":"Răzvan Cojocaru","display_name":"Razvan Cojocaru","email":"razvanc@mailbox.org","username":"razvanc"},"reviewer":{"_account_id":1000003,"name":"Arne Schwabe","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"state":"REVIEWER"}],"messages":[{"id":"8ad1247f88ce447fd7a0526719e4b93de7789b5a","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000053,"name":"Răzvan Cojocaru","display_name":"Razvan Cojocaru","email":"razvanc@mailbox.org","username":"razvanc"},"date":"2026-09-07 07:23:01.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"df5ecca03039ac02b11bd19366048756ac37253e","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000053,"name":"Răzvan Cojocaru","display_name":"Razvan Cojocaru","email":"razvanc@mailbox.org","username":"razvanc"},"date":"2026-09-07 08:05:00.000000000","message":"Uploaded patch set 2: Patch Set 1 was rebased.","accounts_in_message":[],"_revision_number":2},{"id":"e2353c16a47f560a4ff8e7245f2a27f7c1580322","author":{"_account_id":1000003,"name":"Arne Schwabe","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"date":"2026-10-07 17:17:36.000000000","message":"Patch Set 2: Code-Review+2","accounts_in_message":[],"_revision_number":2},{"id":"ef277b47b1191208f75663e736d4c8996501b7af","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000053,"name":"Răzvan Cojocaru","display_name":"Razvan Cojocaru","email":"razvanc@mailbox.org","username":"razvanc"},"date":"2026-10-07 20:05:18.000000000","message":"Uploaded patch set 3: Patch Set 2 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":3},{"id":"e63e67c5852a6ffd1aeed78cf8bb245af0af3ded","tag":"autogenerated:gerrit:merged","author":{"_account_id":1000002,"name":"Gert Doering","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"date":"2026-10-11 15:58:45.000000000","message":"Change has been successfully pushed.","accounts_in_message":[],"_revision_number":4}],"current_revision_number":4,"current_revision":"2318e3366392d0d066c2a8cfa1b3d1f332935334","revisions":{"69816164a9b60a38214c21ce64a6cf169d732327":{"kind":"REWORK","_number":1,"created":"2026-09-07 07:23:01.000000000","uploader":{"_account_id":1000053,"name":"Răzvan Cojocaru","display_name":"Razvan Cojocaru","email":"razvanc@mailbox.org","username":"razvanc"},"ref":"refs/changes/00/1900/1","fetch":{"anonymous http":{"url":"https://gerrit.openvpn.net/openvpn","ref":"refs/changes/00/1900/1","commands":{"Branch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/00/1900/1 \u0026\u0026 git checkout -b change-1900 FETCH_HEAD","Checkout":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/00/1900/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/00/1900/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/00/1900/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://gerrit.openvpn.net/openvpn refs/changes/00/1900/1","Reset To":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/00/1900/1 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"93495f90cf625486a2d071ee04a7c7eeefca1870","subject":"reliable: characterize the packet id comparisons before rewriting them"}],"author":{"name":"Razvan Cojocaru","email":"razvanc@mailbox.org","date":"2026-09-04 10:33:47.000000000","tz":180},"committer":{"name":"Razvan Cojocaru","email":"razvanc@mailbox.org","date":"2026-09-07 07:12:49.000000000","tz":180},"subject":"reliable: drop the half-space packet id comparisons","message":"reliable: drop the half-space packet id comparisons\n\nEvery comparison becomes a modular distance against a stated bound.\nsubtract_pid() stays and reliable_pid_in_range1() loses its suffix;\nreliable_pid_min() and reliable_pid_in_range2() go, and with them the last\n0x80000000 in the file.\n\nThe three scans for the oldest unacknowledged entry now track the largest\ndistance below rel-\u003epacket_id, bounded by rel-\u003esize, in\nreliable_oldest_active_distance(). reliable_wont_break_sequentiality() bounds\nthe distance ahead and accepts past ids outright, as the old comparison did\nwithout the 0x80000000 bias.\n\nreliable_can_send() counts the same entries without the window bound and its\ncaller asserts on the result, so reliable_send() falls back to any eligible\nentry when the bound leaves nothing.\n\nEquivalent for every reachable input. Four deliberate differences:\n\n- Once rel-\u003epacket_id + rel-\u003esize overflows, the absolute clause makes\n  reliable_wont_break_sequentiality() permissive: ids the old bias branch\n  rejected are acknowledged. Nothing more is stored, reliable_not_replay()\n  still bounding that to the receive window, which wraps with rel-\u003epacket_id.\n  Needs ~2^32 control channel packets in one key state.\n- Above 2^31, an id absolutely below rel-\u003epacket_id + rel-\u003esize but more than\n  rel-\u003esize ahead is acknowledged and no longer stored: it can never equal\n  rel-\u003epacket_id, so its slot was held for the rest of the key state. Needs\n  ~2^31 such packets; test_recv_filter_high_base\u0027s oracle switches to the new\n  rule there, pinning behaviour rather than equivalence.\n- The ASSERT in reliable_mark_active_incoming() is the receive window rather\n  than a half space, and runs before the entry is touched. Unobservable: it\n  repeats the check reliable_not_replay() makes immediately before it.\n- A send entry more than rel-\u003esize below rel-\u003epacket_id is ignored by the\n  scans instead of taken for a very old one, so\n  reliable_get_num_output_sequenced_available() can no longer go negative.\n  reliable_get_buf_output_sequenced() keeps every distance within rel-\u003esize,\n  so it never could.\n\nChange-Id: Iaaa0af7d678eb447bc93741add8120d9f348d9eb\nSigned-off-by: Razvan Cojocaru \u003crazvanc@mailbox.org\u003e\n"},"branch":"refs/heads/master"},"65f2d4b01cce8c3f3a0869362c4fd086d0b5c021":{"kind":"TRIVIAL_REBASE","_number":2,"created":"2026-09-07 08:05:00.000000000","uploader":{"_account_id":1000053,"name":"Răzvan Cojocaru","display_name":"Razvan Cojocaru","email":"razvanc@mailbox.org","username":"razvanc"},"ref":"refs/changes/00/1900/2","fetch":{"anonymous http":{"url":"https://gerrit.openvpn.net/openvpn","ref":"refs/changes/00/1900/2","commands":{"Branch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/00/1900/2 \u0026\u0026 git checkout -b change-1900 FETCH_HEAD","Checkout":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/00/1900/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/00/1900/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/00/1900/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://gerrit.openvpn.net/openvpn refs/changes/00/1900/2","Reset To":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/00/1900/2 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"ff9790a5c419a1cc6430aac7aec65764b9151485","subject":"reliable: characterize the packet id comparisons before rewriting them"}],"author":{"name":"Razvan Cojocaru","email":"razvanc@mailbox.org","date":"2026-09-04 10:33:47.000000000","tz":180},"committer":{"name":"Razvan Cojocaru","email":"razvanc@mailbox.org","date":"2026-09-07 08:01:59.000000000","tz":180},"subject":"reliable: drop the half-space packet id comparisons","message":"reliable: drop the half-space packet id comparisons\n\nEvery comparison becomes a modular distance against a stated bound.\nsubtract_pid() stays and reliable_pid_in_range1() loses its suffix;\nreliable_pid_min() and reliable_pid_in_range2() go, and with them the last\n0x80000000 in the file.\n\nThe three scans for the oldest unacknowledged entry now track the largest\ndistance below rel-\u003epacket_id, bounded by rel-\u003esize, in\nreliable_oldest_active_distance(). reliable_wont_break_sequentiality() bounds\nthe distance ahead and accepts past ids outright, as the old comparison did\nwithout the 0x80000000 bias.\n\nreliable_can_send() counts the same entries without the window bound and its\ncaller asserts on the result, so reliable_send() falls back to any eligible\nentry when the bound leaves nothing.\n\nEquivalent for every reachable input. Four deliberate differences:\n\n- Once rel-\u003epacket_id + rel-\u003esize overflows, the absolute clause makes\n  reliable_wont_break_sequentiality() permissive: ids the old bias branch\n  rejected are acknowledged. Nothing more is stored, reliable_not_replay()\n  still bounding that to the receive window, which wraps with rel-\u003epacket_id.\n  Needs ~2^32 control channel packets in one key state.\n- Above 2^31, an id absolutely below rel-\u003epacket_id + rel-\u003esize but more than\n  rel-\u003esize ahead is acknowledged and no longer stored: it can never equal\n  rel-\u003epacket_id, so its slot was held for the rest of the key state. Needs\n  ~2^31 such packets; test_recv_filter_high_base\u0027s oracle switches to the new\n  rule there, pinning behaviour rather than equivalence.\n- The ASSERT in reliable_mark_active_incoming() is the receive window rather\n  than a half space, and runs before the entry is touched. Unobservable: it\n  repeats the check reliable_not_replay() makes immediately before it.\n- A send entry more than rel-\u003esize below rel-\u003epacket_id is ignored by the\n  scans instead of taken for a very old one, so\n  reliable_get_num_output_sequenced_available() can no longer go negative.\n  reliable_get_buf_output_sequenced() keeps every distance within rel-\u003esize,\n  so it never could.\n\nChange-Id: Iaaa0af7d678eb447bc93741add8120d9f348d9eb\nSigned-off-by: Razvan Cojocaru \u003crazvanc@mailbox.org\u003e\n"},"branch":"refs/heads/master"},"b3498ac23db3d94543a33fa766ccba64d10c1183":{"kind":"TRIVIAL_REBASE","_number":3,"created":"2026-10-07 20:05:18.000000000","uploader":{"_account_id":1000053,"name":"Răzvan Cojocaru","display_name":"Razvan Cojocaru","email":"razvanc@mailbox.org","username":"razvanc"},"ref":"refs/changes/00/1900/3","fetch":{"anonymous http":{"url":"https://gerrit.openvpn.net/openvpn","ref":"refs/changes/00/1900/3","commands":{"Branch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/00/1900/3 \u0026\u0026 git checkout -b change-1900 FETCH_HEAD","Checkout":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/00/1900/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/00/1900/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/00/1900/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://gerrit.openvpn.net/openvpn refs/changes/00/1900/3","Reset To":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/00/1900/3 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"008a20a3952e077b35db9841d2ff9b75cf564cfd","subject":"reliable: characterize the packet id comparisons before rewriting them"}],"author":{"name":"Razvan Cojocaru","email":"razvanc@mailbox.org","date":"2026-09-04 10:33:47.000000000","tz":180},"committer":{"name":"Razvan Cojocaru","email":"razvanc@mailbox.org","date":"2026-10-07 20:02:16.000000000","tz":180},"subject":"reliable: drop the half-space packet id comparisons","message":"reliable: drop the half-space packet id comparisons\n\nEvery comparison becomes a modular distance against a stated bound.\nsubtract_pid() stays and reliable_pid_in_range1() loses its suffix;\nreliable_pid_min() and reliable_pid_in_range2() go, and with them the last\n0x80000000 in the file.\n\nThe three scans for the oldest unacknowledged entry now track the largest\ndistance below rel-\u003epacket_id, bounded by rel-\u003esize, in\nreliable_oldest_active_distance(). reliable_wont_break_sequentiality() bounds\nthe distance ahead and accepts past ids outright, as the old comparison did\nwithout the 0x80000000 bias.\n\nreliable_can_send() counts the same entries without the window bound and its\ncaller asserts on the result, so reliable_send() falls back to any eligible\nentry when the bound leaves nothing.\n\nEquivalent for every reachable input. Four deliberate differences:\n\n- Once rel-\u003epacket_id + rel-\u003esize overflows, the absolute clause makes\n  reliable_wont_break_sequentiality() permissive: ids the old bias branch\n  rejected are acknowledged. Nothing more is stored, reliable_not_replay()\n  still bounding that to the receive window, which wraps with rel-\u003epacket_id.\n  Needs ~2^32 control channel packets in one key state.\n- Above 2^31, an id absolutely below rel-\u003epacket_id + rel-\u003esize but more than\n  rel-\u003esize ahead is acknowledged and no longer stored: it can never equal\n  rel-\u003epacket_id, so its slot was held for the rest of the key state. Needs\n  ~2^31 such packets; test_recv_filter_high_base\u0027s oracle switches to the new\n  rule there, pinning behaviour rather than equivalence.\n- The ASSERT in reliable_mark_active_incoming() is the receive window rather\n  than a half space, and runs before the entry is touched. Unobservable: it\n  repeats the check reliable_not_replay() makes immediately before it.\n- A send entry more than rel-\u003esize below rel-\u003epacket_id is ignored by the\n  scans instead of taken for a very old one, so\n  reliable_get_num_output_sequenced_available() can no longer go negative.\n  reliable_get_buf_output_sequenced() keeps every distance within rel-\u003esize,\n  so it never could.\n\nChange-Id: Iaaa0af7d678eb447bc93741add8120d9f348d9eb\nSigned-off-by: Razvan Cojocaru \u003crazvanc@mailbox.org\u003e\n"},"branch":"refs/heads/master"},"2318e3366392d0d066c2a8cfa1b3d1f332935334":{"kind":"TRIVIAL_REBASE_WITH_MESSAGE_UPDATE","_number":4,"created":"2026-10-11 15:58:45.000000000","uploader":{"_account_id":1000002,"name":"Gert Doering","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"ref":"refs/changes/00/1900/4","fetch":{"anonymous http":{"url":"https://gerrit.openvpn.net/openvpn","ref":"refs/changes/00/1900/4","commands":{"Branch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/00/1900/4 \u0026\u0026 git checkout -b change-1900 FETCH_HEAD","Checkout":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/00/1900/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/00/1900/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/00/1900/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://gerrit.openvpn.net/openvpn refs/changes/00/1900/4","Reset To":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/00/1900/4 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"66f8cdb9fd0b0334b6d79016b9d02cfceb6887d7","subject":"Add lookup of multi session by session id"}],"author":{"name":"Razvan Cojocaru","email":"razvanc@mailbox.org","date":"2026-10-08 20:51:37.000000000","tz":120},"committer":{"name":"Gert Doering","email":"gert@greenie.muc.de","date":"2026-10-11 15:52:18.000000000","tz":120},"subject":"reliable: drop the half-space packet id comparisons","message":"reliable: drop the half-space packet id comparisons\n\nEvery comparison becomes a modular distance against a stated bound.\nsubtract_pid() stays and reliable_pid_in_range1() loses its suffix;\nreliable_pid_min() and reliable_pid_in_range2() go, and with them the last\n0x80000000 in the file.\n\nThe three scans for the oldest unacknowledged entry now track the largest\ndistance below rel-\u003epacket_id, bounded by rel-\u003esize, in\nreliable_oldest_active_distance(). reliable_wont_break_sequentiality() bounds\nthe distance ahead and accepts past ids outright, as the old comparison did\nwithout the 0x80000000 bias.\n\nreliable_can_send() counts the same entries without the window bound and its\ncaller asserts on the result, so reliable_send() falls back to any eligible\nentry when the bound leaves nothing.\n\nEquivalent for every reachable input. Four deliberate differences:\n\n- Once rel-\u003epacket_id + rel-\u003esize overflows, the absolute clause makes\n  reliable_wont_break_sequentiality() permissive: ids the old bias branch\n  rejected are acknowledged. Nothing more is stored, reliable_not_replay()\n  still bounding that to the receive window, which wraps with rel-\u003epacket_id.\n  Needs ~2^32 control channel packets in one key state.\n- Above 2^31, an id absolutely below rel-\u003epacket_id + rel-\u003esize but more than\n  rel-\u003esize ahead is acknowledged and no longer stored: it can never equal\n  rel-\u003epacket_id, so its slot was held for the rest of the key state. Needs\n  ~2^31 such packets; test_recv_filter_high_base\u0027s oracle switches to the new\n  rule there, pinning behaviour rather than equivalence.\n- The ASSERT in reliable_mark_active_incoming() is the receive window rather\n  than a half space, and runs before the entry is touched. Unobservable: it\n  repeats the check reliable_not_replay() makes immediately before it.\n- A send entry more than rel-\u003esize below rel-\u003epacket_id is ignored by the\n  scans instead of taken for a very old one, so\n  reliable_get_num_output_sequenced_available() can no longer go negative.\n  reliable_get_buf_output_sequenced() keeps every distance within rel-\u003esize,\n  so it never could.\n\nChange-Id: Iaaa0af7d678eb447bc93741add8120d9f348d9eb\nSigned-off-by: Razvan Cojocaru \u003crazvanc@mailbox.org\u003e\nAcked-by: Arne Schwabe \u003carne-openvpn@rfc2549.org\u003e\nGerrit URL: https://gerrit.openvpn.net/c/openvpn/+/1900\nMessage-Id: \u003c20261008205143.28452-1-gert@greenie.muc.de\u003e\nURL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg39796.html\nSigned-off-by: Gert Doering \u003cgert@greenie.muc.de\u003e\n"},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[]}
