)]}'
{"id":"openvpn~1769","triplet_id":"openvpn~master~Iec384ee6844ab278b280d6eafec8aaecf9dde755","project":"openvpn","branch":"master","topic":"oob-server-probe","attention_set":{"1000003":{"account":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"last_update":"2026-07-06 06:50:54.000000000","reason":"Reviewer was added"}},"removed_from_attention_set":{},"hashtags":[],"change_id":"Iec384ee6844ab278b280d6eafec8aaecf9dde755","subject":"socket: adopt a pre-created UDP socket for a client connection","status":"NEW","created":"2026-07-06 06:50:47.000000000","updated":"2026-07-16 08:09:01.000000000","submit_type":"CHERRY_PICK","submittable":false,"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"562fe2d7198585c5fa729b254b2ff62f7a1fbe17","_number":1769,"virtual_id_number":1769,"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-07-06 06:50:54.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-07-06 06:50:54.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":"45a95d8fe662230836006007c66c9a4f1b4b7375","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000008,"name":"stipa","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-07-06 06:50:47.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"5295ed698f48a6899ca01af9cb730204c80f8639","tag":"autogenerated:gerrit:setTopic","author":{"_account_id":1000008,"name":"stipa","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-07-06 07:11:41.000000000","message":"Topic set to oob-server-probe","accounts_in_message":[],"_revision_number":1},{"id":"16ceb5bcf05d8679fc2bcd68889e56605fb833d1","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000008,"name":"stipa","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-07-06 08:22:28.000000000","message":"Uploaded patch set 2: Patch Set 1 was rebased.","accounts_in_message":[],"_revision_number":2},{"id":"29946f6391c14fa6dcc664dd6dd48aecc1c5966b","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000008,"name":"stipa","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-07-09 13:47:21.000000000","message":"Uploaded patch set 3: Patch Set 2 was rebased.","accounts_in_message":[],"_revision_number":3},{"id":"eb0472cf2933971a6de44ed5145018a2d7ab1a7d","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000008,"name":"stipa","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-07-14 08:14:41.000000000","message":"Uploaded patch set 4: New patch set was added with same tree, parent tree, and commit message as Patch Set 3.","accounts_in_message":[],"_revision_number":4},{"id":"a1103ec15e3df79dd9d94e35ff1bfc8a9501d002","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000008,"name":"stipa","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-07-14 12:32:24.000000000","message":"Uploaded patch set 5: Patch Set 4 was rebased.","accounts_in_message":[],"_revision_number":5},{"id":"4c1db0c4421efbeac956f7ade9f363a79df02adf","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000008,"name":"stipa","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"date":"2026-07-16 07:54:14.000000000","message":"Uploaded patch set 6: Patch Set 5 was rebased.","accounts_in_message":[],"_revision_number":6},{"id":"562fe2d7198585c5fa729b254b2ff62f7a1fbe17","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000008,"name":"stipa","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}],"current_revision_number":7,"current_revision":"54bd711c44c39351131753cc1f8ee4765c107fb1","revisions":{"e5bf3f752723bf8da1d79993651a64c5b3155ba3":{"kind":"REWORK","_number":1,"created":"2026-07-06 06:50:47.000000000","uploader":{"_account_id":1000008,"name":"stipa","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"ref":"refs/changes/69/1769/1","fetch":{"anonymous http":{"url":"http://gerrit.openvpn.net/openvpn","ref":"refs/changes/69/1769/1","commands":{"Branch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/1 \u0026\u0026 git checkout -b change-1769 FETCH_HEAD","Checkout":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull http://gerrit.openvpn.net/openvpn refs/changes/69/1769/1","Reset To":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/1 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"0d31896c89ab6af6d01adf0b3bc129befac23d7d","subject":"oob: advertise a connect_lifetime handshake shortcut"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-03 09:57:36.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-03 12:18:40.000000000","tz":180},"subject":"socket: adopt a pre-created UDP socket for a client connection","message":"socket: adopt a pre-created UDP socket for a client connection\n\nAdd LS_MODE_UDP_ADOPT: a client link_socket can take ownership of an\nalready-bound UDP socket handed off via c2.oob_probe_adopt/oob_probe_sd\ninstead of creating its own, and pins c2.oob_probe_remote as the outgoing\naddress. This lets the OOB server-probe socket become the connection socket,\nso the source IP+port and destination match what the server\u0027s handshake\ncookie is bound to.\n\n  - link_socket_init_phase1: adopt the fd, inherit the address family, skip the\n    local bind, and pre-set lsa-\u003eactual (resolve_remote preserves an already-\n    defined actual)\n  - link_socket_init_phase2: skip create_socket() so the adopted fd is not\n    clobbered (overlapped-I/O init is fd-independent, so Windows is fine)\n  - do_init_socket_phase1: select the mode for the single client socket\n\nDormant until the client sets oob_probe_adopt (next commit).\n\nChange-Id: Iec384ee6844ab278b280d6eafec8aaecf9dde755\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"},"5c10d382b85ff489fc008cf4ff4e8d9e509fd7ac":{"kind":"TRIVIAL_REBASE","_number":2,"created":"2026-07-06 08:22:28.000000000","uploader":{"_account_id":1000008,"name":"stipa","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"ref":"refs/changes/69/1769/2","fetch":{"anonymous http":{"url":"http://gerrit.openvpn.net/openvpn","ref":"refs/changes/69/1769/2","commands":{"Branch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/2 \u0026\u0026 git checkout -b change-1769 FETCH_HEAD","Checkout":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull http://gerrit.openvpn.net/openvpn refs/changes/69/1769/2","Reset To":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/2 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"a6a55ba6774a9ef192f1d5d2199f884054fb5d65","subject":"oob: advertise a connect_lifetime handshake shortcut"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-03 09:57:36.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-06 08:20:50.000000000","tz":180},"subject":"socket: adopt a pre-created UDP socket for a client connection","message":"socket: adopt a pre-created UDP socket for a client connection\n\nAdd LS_MODE_UDP_ADOPT: a client link_socket can take ownership of an\nalready-bound UDP socket handed off via c2.oob_probe_adopt/oob_probe_sd\ninstead of creating its own, and pins c2.oob_probe_remote as the outgoing\naddress. This lets the OOB server-probe socket become the connection socket,\nso the source IP+port and destination match what the server\u0027s handshake\ncookie is bound to.\n\n  - link_socket_init_phase1: adopt the fd, inherit the address family, skip the\n    local bind, and pre-set lsa-\u003eactual (resolve_remote preserves an already-\n    defined actual)\n  - link_socket_init_phase2: skip create_socket() so the adopted fd is not\n    clobbered (overlapped-I/O init is fd-independent, so Windows is fine)\n  - do_init_socket_phase1: select the mode for the single client socket\n\nDormant until the client sets oob_probe_adopt (next commit).\n\nChange-Id: Iec384ee6844ab278b280d6eafec8aaecf9dde755\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"},"fd0663c6295a147265d74560f143628ef4e848bb":{"kind":"TRIVIAL_REBASE","_number":3,"created":"2026-07-09 13:47:21.000000000","uploader":{"_account_id":1000008,"name":"stipa","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"ref":"refs/changes/69/1769/3","fetch":{"anonymous http":{"url":"http://gerrit.openvpn.net/openvpn","ref":"refs/changes/69/1769/3","commands":{"Branch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/3 \u0026\u0026 git checkout -b change-1769 FETCH_HEAD","Checkout":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull http://gerrit.openvpn.net/openvpn refs/changes/69/1769/3","Reset To":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/3 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"43ceb2e492d54654a2b7b5f19ade691f4e013155","subject":"oob: advertise a connect_lifetime handshake shortcut"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-03 09:57:36.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-09 13:39:44.000000000","tz":180},"subject":"socket: adopt a pre-created UDP socket for a client connection","message":"socket: adopt a pre-created UDP socket for a client connection\n\nAdd LS_MODE_UDP_ADOPT: a client link_socket can take ownership of an\nalready-bound UDP socket handed off via c2.oob_probe_adopt/oob_probe_sd\ninstead of creating its own, and pins c2.oob_probe_remote as the outgoing\naddress. This lets the OOB server-probe socket become the connection socket,\nso the source IP+port and destination match what the server\u0027s handshake\ncookie is bound to.\n\n  - link_socket_init_phase1: adopt the fd, inherit the address family, skip the\n    local bind, and pre-set lsa-\u003eactual (resolve_remote preserves an already-\n    defined actual)\n  - link_socket_init_phase2: skip create_socket() so the adopted fd is not\n    clobbered (overlapped-I/O init is fd-independent, so Windows is fine)\n  - do_init_socket_phase1: select the mode for the single client socket\n\nDormant until the client sets oob_probe_adopt (next commit).\n\nChange-Id: Iec384ee6844ab278b280d6eafec8aaecf9dde755\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"},"91a672c825b06881ed8c5dc0c7e9f9a623c5922c":{"kind":"NO_CHANGE","_number":4,"created":"2026-07-14 08:14:41.000000000","uploader":{"_account_id":1000008,"name":"stipa","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"ref":"refs/changes/69/1769/4","fetch":{"anonymous http":{"url":"http://gerrit.openvpn.net/openvpn","ref":"refs/changes/69/1769/4","commands":{"Branch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/4 \u0026\u0026 git checkout -b change-1769 FETCH_HEAD","Checkout":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull http://gerrit.openvpn.net/openvpn refs/changes/69/1769/4","Reset To":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/4 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"5780c56d2a1649851153bbeec6d01fd84fd30e59","subject":"oob: advertise a connect_lifetime handshake shortcut"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-03 09:57:36.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-14 08:13:53.000000000","tz":180},"subject":"socket: adopt a pre-created UDP socket for a client connection","message":"socket: adopt a pre-created UDP socket for a client connection\n\nAdd LS_MODE_UDP_ADOPT: a client link_socket can take ownership of an\nalready-bound UDP socket handed off via c2.oob_probe_adopt/oob_probe_sd\ninstead of creating its own, and pins c2.oob_probe_remote as the outgoing\naddress. This lets the OOB server-probe socket become the connection socket,\nso the source IP+port and destination match what the server\u0027s handshake\ncookie is bound to.\n\n  - link_socket_init_phase1: adopt the fd, inherit the address family, skip the\n    local bind, and pre-set lsa-\u003eactual (resolve_remote preserves an already-\n    defined actual)\n  - link_socket_init_phase2: skip create_socket() so the adopted fd is not\n    clobbered (overlapped-I/O init is fd-independent, so Windows is fine)\n  - do_init_socket_phase1: select the mode for the single client socket\n\nDormant until the client sets oob_probe_adopt (next commit).\n\nChange-Id: Iec384ee6844ab278b280d6eafec8aaecf9dde755\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"},"2c5db3aeb9e63569cbc2badb3640d86098c2084d":{"kind":"TRIVIAL_REBASE","_number":5,"created":"2026-07-14 12:32:24.000000000","uploader":{"_account_id":1000008,"name":"stipa","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"ref":"refs/changes/69/1769/5","fetch":{"anonymous http":{"url":"http://gerrit.openvpn.net/openvpn","ref":"refs/changes/69/1769/5","commands":{"Branch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/5 \u0026\u0026 git checkout -b change-1769 FETCH_HEAD","Checkout":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull http://gerrit.openvpn.net/openvpn refs/changes/69/1769/5","Reset To":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/5 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"8e7f1823d71d8c710e8abb62cd12dfc7d8f58464","subject":"oob: advertise a connect_lifetime handshake shortcut"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-03 09:57:36.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-14 12:22:23.000000000","tz":180},"subject":"socket: adopt a pre-created UDP socket for a client connection","message":"socket: adopt a pre-created UDP socket for a client connection\n\nAdd LS_MODE_UDP_ADOPT: a client link_socket can take ownership of an\nalready-bound UDP socket handed off via c2.oob_probe_adopt/oob_probe_sd\ninstead of creating its own, and pins c2.oob_probe_remote as the outgoing\naddress. This lets the OOB server-probe socket become the connection socket,\nso the source IP+port and destination match what the server\u0027s handshake\ncookie is bound to.\n\n  - link_socket_init_phase1: adopt the fd, inherit the address family, skip the\n    local bind, and pre-set lsa-\u003eactual (resolve_remote preserves an already-\n    defined actual)\n  - link_socket_init_phase2: skip create_socket() so the adopted fd is not\n    clobbered (overlapped-I/O init is fd-independent, so Windows is fine)\n  - do_init_socket_phase1: select the mode for the single client socket\n\nDormant until the client sets oob_probe_adopt (next commit).\n\nChange-Id: Iec384ee6844ab278b280d6eafec8aaecf9dde755\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"},"4334b88d751d5b10c9817cb49530a1ef8a4030d5":{"kind":"TRIVIAL_REBASE","_number":6,"created":"2026-07-16 07:54:14.000000000","uploader":{"_account_id":1000008,"name":"stipa","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"ref":"refs/changes/69/1769/6","fetch":{"anonymous http":{"url":"http://gerrit.openvpn.net/openvpn","ref":"refs/changes/69/1769/6","commands":{"Branch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/6 \u0026\u0026 git checkout -b change-1769 FETCH_HEAD","Checkout":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull http://gerrit.openvpn.net/openvpn refs/changes/69/1769/6","Reset To":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/6 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"83d11cf4cfe70ee315d8c66b4416e6a076fa511a","subject":"oob: advertise a connect_lifetime handshake shortcut"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-03 09:57:36.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-16 07:42:19.000000000","tz":180},"subject":"socket: adopt a pre-created UDP socket for a client connection","message":"socket: adopt a pre-created UDP socket for a client connection\n\nAdd LS_MODE_UDP_ADOPT: a client link_socket can take ownership of an\nalready-bound UDP socket handed off via c2.oob_probe_adopt/oob_probe_sd\ninstead of creating its own, and pins c2.oob_probe_remote as the outgoing\naddress. This lets the OOB server-probe socket become the connection socket,\nso the source IP+port and destination match what the server\u0027s handshake\ncookie is bound to.\n\n  - link_socket_init_phase1: adopt the fd, inherit the address family, skip the\n    local bind, and pre-set lsa-\u003eactual (resolve_remote preserves an already-\n    defined actual)\n  - link_socket_init_phase2: skip create_socket() so the adopted fd is not\n    clobbered (overlapped-I/O init is fd-independent, so Windows is fine)\n  - do_init_socket_phase1: select the mode for the single client socket\n\nDormant until the client sets oob_probe_adopt (next commit).\n\nChange-Id: Iec384ee6844ab278b280d6eafec8aaecf9dde755\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"},"54bd711c44c39351131753cc1f8ee4765c107fb1":{"kind":"TRIVIAL_REBASE","_number":7,"created":"2026-07-16 08:09:01.000000000","uploader":{"_account_id":1000008,"name":"stipa","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"ref":"refs/changes/69/1769/7","fetch":{"anonymous http":{"url":"http://gerrit.openvpn.net/openvpn","ref":"refs/changes/69/1769/7","commands":{"Branch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/7 \u0026\u0026 git checkout -b change-1769 FETCH_HEAD","Checkout":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/7 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/7 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/7 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull http://gerrit.openvpn.net/openvpn refs/changes/69/1769/7","Reset To":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/69/1769/7 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"7bf1531091c139fdbb5a05319e08215941444d98","subject":"oob: advertise a connect_lifetime handshake shortcut"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-03 09:57:36.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-16 08:08:36.000000000","tz":180},"subject":"socket: adopt a pre-created UDP socket for a client connection","message":"socket: adopt a pre-created UDP socket for a client connection\n\nAdd LS_MODE_UDP_ADOPT: a client link_socket can take ownership of an\nalready-bound UDP socket handed off via c2.oob_probe_adopt/oob_probe_sd\ninstead of creating its own, and pins c2.oob_probe_remote as the outgoing\naddress. This lets the OOB server-probe socket become the connection socket,\nso the source IP+port and destination match what the server\u0027s handshake\ncookie is bound to.\n\n  - link_socket_init_phase1: adopt the fd, inherit the address family, skip the\n    local bind, and pre-set lsa-\u003eactual (resolve_remote preserves an already-\n    defined actual)\n  - link_socket_init_phase2: skip create_socket() so the adopted fd is not\n    clobbered (overlapped-I/O init is fd-independent, so Windows is fine)\n  - do_init_socket_phase1: select the mode for the single client socket\n\nDormant until the client sets oob_probe_adopt (next commit).\n\nChange-Id: Iec384ee6844ab278b280d6eafec8aaecf9dde755\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":"NEED"}]},{"rule_name":"checks~ChecksSubmitRule","status":"NOT_READY","requirements":[{"status":"NOT_READY","fallback_text":"All required checks must pass","type":"checks_pass"}]}],"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":"UNSATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"rule:checks~ChecksSubmitRule","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["checks~ChecksSubmitRule"]}}]}
