summaryrefslogtreecommitdiff
path: root/ext/socket/tcpsocket.c
diff options
context:
space:
mode:
authorMasaki Matsushita <[email protected]>2020-08-28 13:07:31 +0900
committerMasaki Matsushita <[email protected]>2020-09-25 15:19:14 +0900
commit511fe23fa2bdf1f17faa91e0558be47b5bb62b2a (patch)
tree203566d21fc91aaf6fe8c6c4c1125a641b521661 /ext/socket/tcpsocket.c
parentb72f9200acf88e60c850a2d400554ff38f81194d (diff)
Add resolve_timeout to TCPSocket [Feature #17134]
Diffstat (limited to 'ext/socket/tcpsocket.c')
-rw-r--r--ext/socket/tcpsocket.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/ext/socket/tcpsocket.c b/ext/socket/tcpsocket.c
index f3fcee781d..6baf367709 100644
--- a/ext/socket/tcpsocket.c
+++ b/ext/socket/tcpsocket.c
@@ -23,12 +23,28 @@ tcp_init(int argc, VALUE *argv, VALUE sock)
{
VALUE remote_host, remote_serv;
VALUE local_host, local_serv;
+ VALUE opt;
+ static ID keyword_ids[1];
+ VALUE kwargs[1];
+ VALUE resolv_timeout = Qnil;
- rb_scan_args(argc, argv, "22", &remote_host, &remote_serv,
- &local_host, &local_serv);
+ if (!keyword_ids[0]) {
+ CONST_ID(keyword_ids[0], "resolv_timeout");
+ }
+
+ rb_scan_args(argc, argv, "22:", &remote_host, &remote_serv,
+ &local_host, &local_serv, &opt);
+
+ if (!NIL_P(opt)) {
+ rb_get_kwargs(opt, keyword_ids, 0, 1, kwargs);
+ if (kwargs[0] != Qundef) {
+ resolv_timeout = kwargs[0];
+ }
+ }
return rsock_init_inetsock(sock, remote_host, remote_serv,
- local_host, local_serv, INET_CLIENT);
+ local_host, local_serv, INET_CLIENT,
+ resolv_timeout);
}
static VALUE