)]}'
{"id":"openvpn~1770","triplet_id":"openvpn~master~I454d5040cbad4d373ee4f90b8d683200d2a4c0e4","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:55.000000000","reason":"Reviewer was added"}},"removed_from_attention_set":{},"hashtags":[],"change_id":"I454d5040cbad4d373ee4f90b8d683200d2a4c0e4","subject":"oob: client handshake shortcut via a server probe","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":"ccb5b8c972b662037000097ced0d656e7dad5fca","_number":1770,"virtual_id_number":1770,"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:55.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:55.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":"9a8627097130c3230fc0decc22ad7355c52a716f","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":"f2f9444a9412a346d3c169629105a6330206be46","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":"f934b73c4d2d3ad1cb54e5182aef55da254b11db","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":"3a96aab768b8852192044d0ed2ed7475ac061cb3","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":"7c704c9132f23d82014e009326359d95da40c39e","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":"16734921c986adbe6a2ee74c30810e43638a82e3","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":"a5e76681425a3d8f8ca8f43fb5cf4906bb69e622","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.","accounts_in_message":[],"_revision_number":6},{"id":"ccb5b8c972b662037000097ced0d656e7dad5fca","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":"b513ee5fb0834a2586a3e6b52ca5c12f37acf54b","revisions":{"fbd8bd63102fd7461907218a0a0224e40e3475ab":{"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/70/1770/1","fetch":{"anonymous http":{"url":"http://gerrit.openvpn.net/openvpn","ref":"refs/changes/70/1770/1","commands":{"Branch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/1 \u0026\u0026 git checkout -b change-1770 FETCH_HEAD","Checkout":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull http://gerrit.openvpn.net/openvpn refs/changes/70/1770/1","Reset To":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/1 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"e5bf3f752723bf8da1d79993651a64c5b3155ba3","subject":"socket: adopt a pre-created UDP socket for a client connection"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-03 09:58:40.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-03 12:18:40.000000000","tz":180},"subject":"oob: client handshake shortcut via a server probe","message":"oob: client handshake shortcut via a server probe\n\nWhen the best remote answered a probe and advertised a connect_lifetime, the\nclient now skips its own three-way handshake and starts at the third packet,\nreusing the probe reply as the server\u0027s HARD_RESET (its session id is a valid\nstateless SYN-cookie). Saves one RTT on connect.\n\n  - oob_client.c: on a shortcut-capable winner, hand its probe socket, the\n    captured server session id (cookie), our probe session id, the pinned\n    responder address, and the resend-wkc flag to the connection via c2;\n    relinquish that socket (do not close it); gate off for dco-win, which has\n    no user-to-kernel socket handoff (probing still works, only the shortcut is\n    skipped).\n  - ssl.c session_skip_to_pre_start_client(): seed our session id to the probe\u0027s\n    (the cookie is an HMAC over it), the remote session id to the cookie, ack\n    the phantom server reset (id 0) so the third packet carries the cookie, set\n    CO_RESEND_WKC for tls-crypt-v2, and drop to S_PRE_START so tls_process()\n    promotes to S_START and sends the ClientHello (no HARD_RESET sent).\n  - init.c: invoke the client skip after tls_multi_init_finalize when adopting.\n\nChange-Id: I454d5040cbad4d373ee4f90b8d683200d2a4c0e4\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"},"58f36111634204ed3d7c30357daacc1eae388e36":{"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/70/1770/2","fetch":{"anonymous http":{"url":"http://gerrit.openvpn.net/openvpn","ref":"refs/changes/70/1770/2","commands":{"Branch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/2 \u0026\u0026 git checkout -b change-1770 FETCH_HEAD","Checkout":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull http://gerrit.openvpn.net/openvpn refs/changes/70/1770/2","Reset To":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/2 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"5c10d382b85ff489fc008cf4ff4e8d9e509fd7ac","subject":"socket: adopt a pre-created UDP socket for a client connection"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-03 09:58:40.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-06 08:20:50.000000000","tz":180},"subject":"oob: client handshake shortcut via a server probe","message":"oob: client handshake shortcut via a server probe\n\nWhen the best remote answered a probe and advertised a connect_lifetime, the\nclient now skips its own three-way handshake and starts at the third packet,\nreusing the probe reply as the server\u0027s HARD_RESET (its session id is a valid\nstateless SYN-cookie). Saves one RTT on connect.\n\n  - oob_client.c: on a shortcut-capable winner, hand its probe socket, the\n    captured server session id (cookie), our probe session id, the pinned\n    responder address, and the resend-wkc flag to the connection via c2;\n    relinquish that socket (do not close it); gate off for dco-win, which has\n    no user-to-kernel socket handoff (probing still works, only the shortcut is\n    skipped).\n  - ssl.c session_skip_to_pre_start_client(): seed our session id to the probe\u0027s\n    (the cookie is an HMAC over it), the remote session id to the cookie, ack\n    the phantom server reset (id 0) so the third packet carries the cookie, set\n    CO_RESEND_WKC for tls-crypt-v2, and drop to S_PRE_START so tls_process()\n    promotes to S_START and sends the ClientHello (no HARD_RESET sent).\n  - init.c: invoke the client skip after tls_multi_init_finalize when adopting.\n\nChange-Id: I454d5040cbad4d373ee4f90b8d683200d2a4c0e4\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"},"fbc9dbbe6d7ecb8f527c604cce1529f4f8c21fc4":{"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/70/1770/3","fetch":{"anonymous http":{"url":"http://gerrit.openvpn.net/openvpn","ref":"refs/changes/70/1770/3","commands":{"Branch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/3 \u0026\u0026 git checkout -b change-1770 FETCH_HEAD","Checkout":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull http://gerrit.openvpn.net/openvpn refs/changes/70/1770/3","Reset To":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/3 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"fd0663c6295a147265d74560f143628ef4e848bb","subject":"socket: adopt a pre-created UDP socket for a client connection"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-03 09:58:40.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-09 13:39:44.000000000","tz":180},"subject":"oob: client handshake shortcut via a server probe","message":"oob: client handshake shortcut via a server probe\n\nWhen the best remote answered a probe and advertised a connect_lifetime, the\nclient now skips its own three-way handshake and starts at the third packet,\nreusing the probe reply as the server\u0027s HARD_RESET (its session id is a valid\nstateless SYN-cookie). Saves one RTT on connect.\n\n  - oob_client.c: on a shortcut-capable winner, hand its probe socket, the\n    captured server session id (cookie), our probe session id, the pinned\n    responder address, and the resend-wkc flag to the connection via c2;\n    relinquish that socket (do not close it); gate off for dco-win, which has\n    no user-to-kernel socket handoff (probing still works, only the shortcut is\n    skipped).\n  - ssl.c session_skip_to_pre_start_client(): seed our session id to the probe\u0027s\n    (the cookie is an HMAC over it), the remote session id to the cookie, ack\n    the phantom server reset (id 0) so the third packet carries the cookie, set\n    CO_RESEND_WKC for tls-crypt-v2, and drop to S_PRE_START so tls_process()\n    promotes to S_START and sends the ClientHello (no HARD_RESET sent).\n  - init.c: invoke the client skip after tls_multi_init_finalize when adopting.\n\nChange-Id: I454d5040cbad4d373ee4f90b8d683200d2a4c0e4\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"},"4c0a450da919e565a12bba0149c3c8f2492d0dfd":{"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/70/1770/4","fetch":{"anonymous http":{"url":"http://gerrit.openvpn.net/openvpn","ref":"refs/changes/70/1770/4","commands":{"Branch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/4 \u0026\u0026 git checkout -b change-1770 FETCH_HEAD","Checkout":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull http://gerrit.openvpn.net/openvpn refs/changes/70/1770/4","Reset To":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/4 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"91a672c825b06881ed8c5dc0c7e9f9a623c5922c","subject":"socket: adopt a pre-created UDP socket for a client connection"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-03 09:58:40.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-14 08:13:53.000000000","tz":180},"subject":"oob: client handshake shortcut via a server probe","message":"oob: client handshake shortcut via a server probe\n\nWhen the best remote answered a probe and advertised a connect_lifetime, the\nclient now skips its own three-way handshake and starts at the third packet,\nreusing the probe reply as the server\u0027s HARD_RESET (its session id is a valid\nstateless SYN-cookie). Saves one RTT on connect.\n\n  - oob_client.c: on a shortcut-capable winner, hand its probe socket, the\n    captured server session id (cookie), our probe session id, the pinned\n    responder address, and the resend-wkc flag to the connection via c2;\n    relinquish that socket (do not close it); gate off for dco-win, which has\n    no user-to-kernel socket handoff (probing still works, only the shortcut is\n    skipped).\n  - ssl.c session_skip_to_pre_start_client(): seed our session id to the probe\u0027s\n    (the cookie is an HMAC over it), the remote session id to the cookie, ack\n    the phantom server reset (id 0) so the third packet carries the cookie, set\n    CO_RESEND_WKC for tls-crypt-v2, and drop to S_PRE_START so tls_process()\n    promotes to S_START and sends the ClientHello (no HARD_RESET sent).\n  - init.c: invoke the client skip after tls_multi_init_finalize when adopting.\n\nChange-Id: I454d5040cbad4d373ee4f90b8d683200d2a4c0e4\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"},"69348b80747574cdc64b3b8323957f50c22bdbc8":{"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/70/1770/5","fetch":{"anonymous http":{"url":"http://gerrit.openvpn.net/openvpn","ref":"refs/changes/70/1770/5","commands":{"Branch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/5 \u0026\u0026 git checkout -b change-1770 FETCH_HEAD","Checkout":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull http://gerrit.openvpn.net/openvpn refs/changes/70/1770/5","Reset To":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/5 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"2c5db3aeb9e63569cbc2badb3640d86098c2084d","subject":"socket: adopt a pre-created UDP socket for a client connection"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-03 09:58:40.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-14 12:22:23.000000000","tz":180},"subject":"oob: client handshake shortcut via a server probe","message":"oob: client handshake shortcut via a server probe\n\nWhen the best remote answered a probe and advertised a connect_lifetime, the\nclient now skips its own three-way handshake and starts at the third packet,\nreusing the probe reply as the server\u0027s HARD_RESET (its session id is a valid\nstateless SYN-cookie). Saves one RTT on connect.\n\n  - oob_client.c: on a shortcut-capable winner, hand its probe socket, the\n    captured server session id (cookie), our probe session id, the pinned\n    responder address, and the resend-wkc flag to the connection via c2;\n    relinquish that socket (do not close it); gate off for dco-win, which has\n    no user-to-kernel socket handoff (probing still works, only the shortcut is\n    skipped).\n  - ssl.c session_skip_to_pre_start_client(): seed our session id to the probe\u0027s\n    (the cookie is an HMAC over it), the remote session id to the cookie, ack\n    the phantom server reset (id 0) so the third packet carries the cookie, set\n    CO_RESEND_WKC for tls-crypt-v2, and drop to S_PRE_START so tls_process()\n    promotes to S_START and sends the ClientHello (no HARD_RESET sent).\n  - init.c: invoke the client skip after tls_multi_init_finalize when adopting.\n\nChange-Id: I454d5040cbad4d373ee4f90b8d683200d2a4c0e4\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"},"8c83de24372c690a1dc968ab24133511d794258a":{"kind":"REWORK","_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/70/1770/6","fetch":{"anonymous http":{"url":"http://gerrit.openvpn.net/openvpn","ref":"refs/changes/70/1770/6","commands":{"Branch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/6 \u0026\u0026 git checkout -b change-1770 FETCH_HEAD","Checkout":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull http://gerrit.openvpn.net/openvpn refs/changes/70/1770/6","Reset To":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/6 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"4334b88d751d5b10c9817cb49530a1ef8a4030d5","subject":"socket: adopt a pre-created UDP socket for a client connection"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-03 09:58:40.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-16 07:42:37.000000000","tz":180},"subject":"oob: client handshake shortcut via a server probe","message":"oob: client handshake shortcut via a server probe\n\nWhen the best remote answered a probe and advertised a connect_lifetime, the\nclient now skips its own three-way handshake and starts at the third packet,\nreusing the probe reply as the server\u0027s HARD_RESET (its session id is a valid\nstateless SYN-cookie). Saves one RTT on connect.\n\n  - oob_client.c: on a shortcut-capable winner, hand its probe socket, the\n    captured server session id (cookie), our probe session id, the pinned\n    responder address, and the resend-wkc flag to the connection via c2;\n    relinquish that socket (do not close it); gate off for dco-win, which has\n    no user-to-kernel socket handoff (probing still works, only the shortcut is\n    skipped).\n  - ssl.c session_skip_to_pre_start_client(): seed our session id to the probe\u0027s\n    (the cookie is an HMAC over it), the remote session id to the cookie, ack\n    the phantom server reset (id 0) so the third packet carries the cookie, set\n    CO_RESEND_WKC for tls-crypt-v2, and drop to S_PRE_START so tls_process()\n    promotes to S_START and sends the ClientHello (no HARD_RESET sent).\n  - init.c: invoke the client skip after tls_multi_init_finalize when adopting.\n\nChange-Id: I454d5040cbad4d373ee4f90b8d683200d2a4c0e4\nSigned-off-by: Lev Stipakov \u003clev@openvpn.net\u003e\n"},"branch":"refs/heads/master"},"b513ee5fb0834a2586a3e6b52ca5c12f37acf54b":{"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/70/1770/7","fetch":{"anonymous http":{"url":"http://gerrit.openvpn.net/openvpn","ref":"refs/changes/70/1770/7","commands":{"Branch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/7 \u0026\u0026 git checkout -b change-1770 FETCH_HEAD","Checkout":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/7 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/7 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/7 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull http://gerrit.openvpn.net/openvpn refs/changes/70/1770/7","Reset To":"git fetch http://gerrit.openvpn.net/openvpn refs/changes/70/1770/7 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"54bd711c44c39351131753cc1f8ee4765c107fb1","subject":"socket: adopt a pre-created UDP socket for a client connection"}],"author":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-03 09:58:40.000000000","tz":180},"committer":{"name":"Lev Stipakov","email":"lev@openvpn.net","date":"2026-07-16 08:08:36.000000000","tz":180},"subject":"oob: client handshake shortcut via a server probe","message":"oob: client handshake shortcut via a server probe\n\nWhen the best remote answered a probe and advertised a connect_lifetime, the\nclient now skips its own three-way handshake and starts at the third packet,\nreusing the probe reply as the server\u0027s HARD_RESET (its session id is a valid\nstateless SYN-cookie). Saves one RTT on connect.\n\n  - oob_client.c: on a shortcut-capable winner, hand its probe socket, the\n    captured server session id (cookie), our probe session id, the pinned\n    responder address, and the resend-wkc flag to the connection via c2;\n    relinquish that socket (do not close it); gate off for dco-win, which has\n    no user-to-kernel socket handoff (probing still works, only the shortcut is\n    skipped).\n  - ssl.c session_skip_to_pre_start_client(): seed our session id to the probe\u0027s\n    (the cookie is an HMAC over it), the remote session id to the cookie, ack\n    the phantom server reset (id 0) so the third packet carries the cookie, set\n    CO_RESEND_WKC for tls-crypt-v2, and drop to S_PRE_START so tls_process()\n    promotes to S_START and sends the ClientHello (no HARD_RESET sent).\n  - init.c: invoke the client skip after tls_multi_init_finalize when adopting.\n\nChange-Id: I454d5040cbad4d373ee4f90b8d683200d2a4c0e4\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"]}}]}
