[ruby-core:123410] [Ruby Feature#21347] Add `open_timeout` as an overall timeout option for `Socket.tcp`
From:
"osyoyu (Daisuke Aritomo) via ruby-core" <ruby-core@...>
Date:
2025-10-07 16:09:15 UTC
List:
ruby-core #123410
SXNzdWUgIzIxMzQ3IGhhcyBiZWVuIHVwZGF0ZWQgYnkgb3N5b3l1IChEYWlzdWtlIEFyaXRvbW8p Lg0KDQoNClRoYW5rIHlvdSBmb3IgeW91ciBjb25zaWRlcmF0aW9uLiBJIGFwcHJlY2lhdGUgeW91 ciBjb21tZW50cy4NCg0KSWYgeW91J3JlIE9LIHdpdGggYHJlc2N1ZSBBcmd1bWVudEVycm9yYCBm b3IgZmVhdHVyZSBkZXRlY3Rpb24gaW4gbmV0L2h0dHAsDQpJJ2QgbGlrZSB0byBwcm9jZWVkIG9u IGh0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5L25ldC1odHRwL3B1bGwvMjI0IHdpdGggdGhlIGN1cnJl bnQgaW1wbGVtZW50YXRpb24uDQpDYW4geW91IHJldmlldyB0aGlzIHBhdGNoPw0KDQotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpGZWF0dXJlICMyMTM0NzogQWRkIGBv cGVuX3RpbWVvdXRgIGFzIGFuIG92ZXJhbGwgdGltZW91dCBvcHRpb24gZm9yIGBTb2NrZXQudGNw YA0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzIxMzQ3I2NoYW5nZS0xMTQ3NzkN Cg0KKiBBdXRob3I6IHNoaW9pbW0gKE1pc2FraSBTaGlvaSkNCiogU3RhdHVzOiBDbG9zZWQNCiog QXNzaWduZWU6IHNoaW9pbW0gKE1pc2FraSBTaGlvaSkNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCkkgcHJvcG9zZSB0byBhZGQgYW4gb3ZlcmFsbCB0aW1lb3V0IG9w dGlvbiB0byBgU29ja2V0LnRjcGAgKGFuZCBgVENQU29ja2V0Lm5ld2ApDQoNCiMjIyBCYWNrZ3Jv dW5kDQoNCkN1cnJlbnRseSwgYFRDUFNvY2tldC5uZXdgIGFuZCBgU29ja2V0LnRjcGAgYWNjZXB0 IHR3byBraW5kIG9mIHRpbWVvdXQgb3B0aW9uczoNCi0gYHJlc29sdl90aW1lb3V0YCwgd2hpY2gg Y29udHJvbHMgdGhlIHRpbWVvdXQgZm9yIEROUyByZXNvbHV0aW9uDQotIGBjb25uZWN0X3RpbWVv dXRgLCB3aGljaCBjb250cm9scyB0aGUgdGltZW91dCBmb3IgdGhlIGNvbm5lY3Rpb24gYXR0ZW1w dA0KDQpXaXRoIHRoZSBpbnRyb2R1Y3Rpb24gb2YgSGFwcHkgRXllYmFsbHMgVmVyc2lvbiAyIChh cyBwZXIgW1JGQyA4MzA1XShodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3Jm YzgzMDUpKSBpblsgRmVhdHVyZSAjMjAxMDhdKGh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lz c3Vlcy8yMDEwOCkgYW5kIFtGZWF0dXJlICMyMDc4Ml0oaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5v cmcvaXNzdWVzLzIwNzgyKSwgYm90aCBhZGRyZXNzIHJlc29sdXRpb24gYW5kIGNvbm5lY3Rpb24g YXR0ZW1wdHMgYXJlIG5vdyBwYXJhbGxlbGl6ZWQuIA0KQXMgYSByZXN1bHQsIHRoZSBzdW0gb2Yg YHJlc29sdl90aW1lb3V0YCBhbmQgYGNvbm5lY3RfdGltZW91dGAgbm8gbG9uZ2VyIHJlcHJlc2Vu dHMgdGhlIHRvdGFsIHRpbWVvdXQgZHVyYXRpb24uIFRoaXMgaXMgYmVjYXVzZSwgaW4gSEV2Miwg bmFtZSByZXNvbHV0aW9uIGFuZCBjb25uZWN0aW9uIGF0dGVtcHRzIGFyZSBwZXJmb3JtZWQgY29u Y3VycmVudGx5LCBjYXVzaW5nIHRoZSB0d28gdGltZW91dHMgdG8gb3ZlcmxhcC4NCg0KRXhhbXBs ZToNCldoZW4gYHJlc29sdl90aW1lb3V0OiAyMDBtc2AgYW5kIGBjb25uZWN0X3RpbWVvdXQ6IDEw MG1zYCBhcmUgc2V0Og0KMS4gQW4gSVB2NiBhZGRyZXNzICBpcyByZXNvbHZlZCBhZnRlciB0aGUg bWV0aG9kIHN0YXJ0cyBpbW1lZGlhdGVseSAoSVB2NCBpcyBzdGlsbCBiZWluZyByZXNvbHZlZCku DQoyLiBBIGNvbm5lY3Rpb24gYXR0ZW1wdCBpcyBpbml0aWF0ZWQgdG8gdGhlIElQdjYgYWRkcmVz cw0KMy4gQWZ0ZXIgMTAwbXMsIGBjb25uZWN0X3RpbWVvdXRgIGlzIGV4Y2VlZGVkLiBIb3dldmVy LCBzaW5jZSBgcmVzb2x2X3RpbWVvdXRgIHN0aWxsIGhhcyAxMDBtcyBsZWZ0LCB0aGUgSVB2NCBy ZXNvbHV0aW9uIGNvbnRpbnVlcy4NCjQuIEFmdGVyIDIwMG1zIGZyb20gdGhlIHN0YXJ0LCB0aGUg bWV0aG9kIHJhaXNlcyBhIGByZXNvbHZfdGltZW91dGAgZXJyb3IuDQoNCkluIHRoaXMgY2FzZSwg dGhlIHRvdGFsIGVsYXBzZWQgdGltZSBiZWZvcmUgYSB0aW1lb3V0IGlzIDIwMG1zLCBub3QgdGhl IGV4cGVjdGVkIDMwMG1zICgxMDBtcyArIDIwMG1zKS4NCg0KRnVydGhlcm1vcmUsIGluIEhFdjIs IGNvbm5lY3Rpb24gYXR0ZW1wdHMgYXJlIGFsc28gcGFyYWxsZWxpemVkLg0KSXQgc3RhcnRzIGEg bmV3IGNvbm5lY3Rpb24gYXR0ZW1wdHMgZXZlcnkgMjUwbXMgZm9yIHJlc29sdmVkIGFkZHJlc3Nl cy4gVGhpcyBtYWtlcyB0aGUgZGVmaW5pdGlvbiBvZiBgY29ubmVjdF90aW1lb3V0YCBldmVuIG1v cmUgYW1iaWd1b3Vz4oCUc3BlY2lmaWNhbGx5LCBpdCBiZWNvbWVzIHVuY2xlYXIgZnJvbSB3aGlj aCBwb2ludCB0aGUgdGltZW91dCBpcyBjb3VudGVkLg0KDQpBZGRpdGlvbmFsbHksIHRoZXNlIG1l dGhvZHMgaW5pdGlhdGUgbmV3IGNvbm5lY3Rpb24gYXR0ZW1wdHMgZXZlcnkgMjUwbXMgKENvbm5l Y3Rpb24gQXR0ZW1wdCBEZWxheSkgZm9yIGVhY2ggY2FuZGlkYXRlIGFkZHJlc3MsIHRoZXJlYnkg cGFyYWxsZWxpemluZyBjb25uZWN0aW9uIGF0dGVtcHRzLiBIb3dldmVyLCB0aGlzIGJlaGF2aW9y IG1ha2VzIGl0IHVuY2xlYXIgZnJvbSB3aGljaCBwb2ludCBpbiB0aW1lIHRoZSBjb25uZWN0X3Rp bWVvdXQgaXMgYWN0dWFsbHkgbWVhc3VyZWQuDQpDdXJyZW50bHksIGEgYGNvbm5lY3RfdGltZW91 dGAgaXMgcmFpc2VkIG9ubHkgYWZ0ZXIgdGhlIGxhc3QgY29ubmVjdGlvbiBhdHRlbXB0IGV4Y2Vl ZHMgdGhlIHRpbWVvdXQuDQoNCkV4YW1wbGU6DQpXaGVuIGBjb25uZWN0X3RpbWVvdXQ6IDEwMG1z YCBpcyBzZXQgYW5kIDMgYWRkcmVzcyBjYW5kaWRhdGVzOg0KMS4gQ29ubmVjdCB0byBhZGRyZXNz IGBhYCBhdCB0PTBtcy4NCjIuIENvbm5lY3QgdG8gYWRkcmVzcyBgYmAgYXQgdD0yNTBtcy4NCjMu IENvbm5lY3QgdG8gYWRkcmVzcyBgY2AgYXQgdD01MDBtcy4NCjQuIElmIGFsbCBmYWlsLCB0aGUg ZXhjZXB0aW9uIGlzIHJhaXNlZCBhdCB0PTE1MDBtcyAoMTAwMG1zIGFmdGVyIGBjYCwgMTI1MG1z IGFmdGVyIGBiYCwgMTUwMG1zIGFmdGVyIGBhYCkuDQoNCjEuIFN0YXJ0IGEgY29ubmVjdGlvbiBh dHRlbXB0IHRvIHRoZSBhZGRyZXNzIGBhYA0KMi4gMjUwbXMgYWZ0ZXIgc3RlcCAxLCBzdGFydCBh IG5ldyBjb25uZWN0aW9uIGF0dGVtcHQgdG8gdGhlIGFkZHJlc3MgYGJgDQozLiA1MDBtcyBhZnRl ciBzdGVwIDEsIHN0YXJ0IGEgbmV3IGNvbm5lY3Rpb24gYXR0ZW1wdCB0byB0aGUgYWRkcmVzcyBg Y2ANCjQuIDEwMDBtcyBhZnRlciBzdGVwIDMgKDEwMDBtcyBhZnRlciBzdGFydGluZyB0aGUgY29u bmVjdGlvbiB0byBgY2AsIDEyNTBtcyBhZnRlciBzdGFydGluZyB0aGUgY29ubmVjdGlvbiB0byBg YixgIGFuZCAxNTAwbXMgYWZ0ZXIgc3RhcnRpbmcgdGhlIGNvbm5lY3Rpb24gdG8gYGFgKSBgY29u bmVjdF90aW1lb3V0YCBpcyByYWlzZWQNCg0KVGhpcyBiZWhhdmlvciBhaW1zIHRvIGZhdm9yIHN1 Y2Nlc3NmdWwgY29ubmVjdGlvbnMgYnkgYWxsb3dpbmcgbW9yZSB0aW1lIGZvciBlYWNoIGF0dGVt cHQsIGJ1dCBpdCByZXN1bHRzIGluIGEgdGltZW91dCBtb2RlbCB0aGF0IGlzIGRpZmZpY3VsdCB0 byByZWFzb24gYWJvdXQuDQoNClRoZXNlIG1ldGhvZHMgaGF2ZSBzdXBwb3J0ZWQgYHJlc29sdl90 aW1lb3V0YCBhbmQgYGNvbm5lY3RfdGltZW91dGAgb3B0aW9ucyBldmVuIGJlZm9yZSB0aGUgaW50 cm9kdWN0aW9uIG9mIEhFdjIuIEhvd2V2ZXIsIGluIG1hbnkgdXNlIGNhc2VzLCBpdCB3b3VsZCBi ZSBtb3JlIGNvbnZlbmllbnQgaWYgYSB0aW1lb3V0IG9jY3VycmVkIGFmdGVyIGEgc3BlY2lmaWVk IGR1cmF0aW9uIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBtZXRob2QuIFNpbWlsYXIgZnVuY3Rpb25z IGluIG90aGVyIGxhbmd1YWdlcyAoc3VjaCBhcyBQSFAsIFB5dGhvbiwgYW5kIEdvKSB0eXBpY2Fs bHkgYWxsb3cgc3BlY2lmeWluZyBvbmx5IGFuIG92ZXJhbGwgdGltZW91dC4NCg0KDQojIyMgUHJv cG9zYWwNCkkgcHJvcG9zZSBhZGRpbmcgYW4gYG9wZW5fdGltZW91dGAgb3B0aW9uIHRvIGBTb2Nr ZXQudGNwYCBpbiB0aGUgZm9sbG93aW5nIFBSLCB3aGljaCB0cmlnZ2VycyBhIHRpbWVvdXQgYWZ0 ZXIgYSBzcGVjaWZpZWQgZHVyYXRpb24gaGFzIGVsYXBzZWQgZnJvbSB0aGUgc3RhcnQgb2YgdGhl IG1ldGhvZC4NCmh0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5L3J1YnkvcHVsbC8xMzM2OA0KDQpUaGUg bmFtZSBgb3Blbl90aW1lb3V0YCBhbGlnbnMgd2l0aCB0aGUgZXhpc3RpbmcgYWNjZXNzb3IgdXNl ZCBpbiBgTmV0OjpIVFRQYC4NCklmIGBvcGVuX3RpbWVvdXRgIGlzIHNwZWNpZmllZCB0b2dldGhl ciB3aXRoIGByZXNvbHZfdGltZW91dGAgYW5kIGBjb25uZWN0X3RpbWVvdXRgLCBJIHByb3Bvc2Ug dGhhdCBvbmx5IGBvcGVuX3RpbWVvdXRgIGJlIHVzZWQgYW5kIHRoZSBvdGhlcnMgYmUgaWdub3Jl ZC4gV2hpbGUgaXQgaXMgcG9zc2libGUgdG8gc3VwcG9ydCBjb21iaW5hdGlvbnMgb2YgYG9wZW5f dGltZW91dGAsIGByZXNvbHZfdGltZW91dGAsIGFuZCBgY29ubmVjdF90aW1lb3V0YCwgZG9pbmcg c28gd291bGQgcmVxdWlyZSBkZWZpbmluZyB3aGljaCB0aW1lb3V0IHRha2VzIHByZWNlZGVuY2Ug aW4gd2hpY2ggc2l0dWF0aW9ucy4gSW4gdGhpcyBjYXNlLCBJIGJlbGlldmUgaXQgaXMgbW9yZSB2 YWx1YWJsZSB0byBrZWVwIHRoZSBiZWhhdmlvciBzaW1wbGUgYW5kIGVhc3kgdG8gdW5kZXJzdGFu ZCwgcmF0aGVyIHRoYW4gc3VwcG9ydGluZyBtb3JlIGNvbXBsZXggdXNlIGNhc2VzLg0KDQpJZiB0 aGlzIHByb3Bvc2FsIGlzIGFjY2VwdGVkLCBJIGFsc28gcGxhbiB0byBleHRlbmQgYG9wZW5fdGlt ZW91dGAgc3VwcG9ydCB0byBgVENQU29ja2V0Lm5ld2AuDQoNCldoaWxlIHRoZSBsb25nLXRlcm0g ZnV0dXJlIG9mIGByZXNvbHZfdGltZW91dGAgYW5kIGBjb25uZWN0X3RpbWVvdXRgIG1heSB3YXJy YW50IGZ1cnRoZXIgZGlzY3Vzc2lvbiwgSSBiZWxpZXZlIHRoZSBpbW1lZGlhdGUgcHJpb3JpdHkg aXMgdG8gb2ZmZXIgYSBzdHJhaWdodGZvcndhcmQgd2F5IHRvIHNwZWNpZnkgYW4gb3ZlcmFsbCB0 aW1lb3V0Lg0KDQojIyMgT3V0Y29tZQ0KSWYgYG9wZW5fdGltZW91dGAgaXMgYWxzbyBzdXBwb3J0 ZWQgYnkgYFRDUFNvY2tldC5uZXdgLCB1c2VycyB3b3VsZCBiZSBhYmxlIHRvIG1hbmFnZSB0b3Rh bCBjb25uZWN0aW9uIHRpbWVvdXRzIGRpcmVjdGx5IGluIGBOZXQ6OkhUVFAjY29ubmVjdGAgd2l0 aG91dCByZWx5aW5nIG9uIGBUaW1lb3V0LnRpbWVvdXRgLg0KaHR0cHM6Ly9naXRodWIuY29tL3J1 YnkvcnVieS9ibG9iL2FhMGY2ODliZjQ1MzUyYzRhNTkyZTdmMWEwNDQ5MTJjNDA0MzUyNjYvbGli L25ldC9odHRwLnJiI0wxNjU3DQoNCg0KDQotLSANCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3Jn Lw0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwogcnVieS1j b3JlIG1haWxpbmcgbGlzdCAtLSBydWJ5LWNvcmVAbWwucnVieS1sYW5nLm9yZwogVG8gdW5zdWJz Y3JpYmUgc2VuZCBhbiBlbWFpbCB0byBydWJ5LWNvcmUtbGVhdmVAbWwucnVieS1sYW5nLm9yZwog cnVieS1jb3JlIGluZm8gLS0gaHR0cHM6Ly9tbC5ydWJ5LWxhbmcub3JnL21haWxtYW4zL2xpc3Rz L3J1YnktY29yZS5tbC5ydWJ5LWxhbmcub3JnLwo=