diff options
author | Masaki Matsushita <[email protected]> | 2020-08-28 13:07:31 +0900 |
---|---|---|
committer | Masaki Matsushita <[email protected]> | 2020-09-25 15:19:14 +0900 |
commit | 511fe23fa2bdf1f17faa91e0558be47b5bb62b2a (patch) | |
tree | 203566d21fc91aaf6fe8c6c4c1125a641b521661 /ext/socket/tcpsocket.c | |
parent | b72f9200acf88e60c850a2d400554ff38f81194d (diff) |
Add resolve_timeout to TCPSocket [Feature #17134]
Diffstat (limited to 'ext/socket/tcpsocket.c')
-rw-r--r-- | ext/socket/tcpsocket.c | 22 |
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 |