[#37674] [Bug:trunk] Socket.getaddrinfo("www.ruby-lang.org", 80) returns only UDP information — Tanaka Akira <akr@...>
1.9 と 1.8 で Socket.getaddrinfo("www.ruby-lang.org", 80) の返り値が違います。
4 messages
2009/01/01
[#37677] [BUG:trunk] Re: [ruby-cvs:28403] Ruby:r21185 (trunk): * thread.c (rb_thread_blocking_region): add a comment. — "U.Nakamura" <usa@...>
あけましておめでとうございます、なかむら(う)です。
4 messages
2009/01/02
[#37679] [FEATURE:trunk] EncDet again — "Yugui (Yuki Sonoda)" <yugui@...>
Yuguiです。
23 messages
2009/01/03
[#39781] [Feature #973] EncDet again
— Yui NARUSE <redmine@...>
2009/11/25
チケット #973 が更新されました。 (by Yui NARUSE)
[#39782] Re: [Feature #973] EncDet again
— Kouhei Sutou <kou@...>
2009/11/25
須藤です。
[#37680] Re: [ruby-cvs:28500] Ruby:r21282 (trunk): * enc/trans/euc-cn.c: renemed from gb2312.c because GB2312 is — Martin Duerst <duerst@...>
At 15:29 09/01/03, you wrote:
3 messages
2009/01/03
[#37681] Re: [ruby-cvs:28501] Ruby:r21283 (trunk): * enc/trans/chinese.trans: added for transcoding EUC-CN and GB12345. — Martin Duerst <duerst@...>
At 15:31 09/01/03, you wrote:
5 messages
2009/01/03
[#37684] Re: [ruby-cvs:28501] Ruby:r21283 (trunk): * enc/trans/chinese.trans: added for transcoding EUC-CN and GB12345.
— "NARUSE, Yui" <naruse@...>
2009/01/03
成瀬です。
[#37694] Re: [ruby-cvs:28501] Ruby:r21283 (trunk): *enc/trans/chinese.trans: added for transcoding EUC-CN and GB12345.
— Martin Duerst <duerst@...>
2009/01/04
At 23:18 09/01/03, NARUSE, Yui wrote:
[#37686] IRB doesn't prompt for MSWin32 — arton <artonx@...>
artonです。
11 messages
2009/01/03
[#37687] Re: IRB doesn't prompt for MSWin32
— "Ayumu Aizawa" <ayumu.aizawa@...>
2009/01/03
ruby-devにははじめてメールします、あいざわです。
[#37688] [Bug #974] Range#max で終了しないことがある — tadayoshi funaba <redmine@...>
Bug #974: Range#max で終了しないことがある
6 messages
2009/01/03
[#37689] Re: [Bug #974] Range#max で終了しないことがある
— Yukihiro Matsumoto <matz@...>
2009/01/03
まつもと ゆきひろです
[#37692] AddrInfo — Tanaka Akira <akr@...>
提案なのですが、ext/socket で AddrInfo クラスを新設するのはどうでしょうか。
8 messages
2009/01/04
[#37737] Encoding.locale_charmap — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
13 messages
2009/01/08
[#37738] Re: Encoding.locale_charmap
— Yukihiro Matsumoto <matz@...>
2009/01/08
まつもと ゆきひろです
[#37748] $LOAD_PATHとバージョンの運用の関係 — akira yamada / やまだあきら <akira@...>
1.9系でのバージョンの運用と$LOAD_PATHの値について質問です。
12 messages
2009/01/09
[#37758] Re: $LOAD_PATHとバージョンの運用の関係
— "NARUSE, Yui" <naruse@...>
2009/01/11
成瀬です。
[#37889] Re: $LOAD_PATHとバージョンの運用の関係
— Takao Kouji <kouji@...7.net>
2009/02/03
高尾宏治です。
[#37890] Re: $LOAD_PATHとバージョンの運用の関係
— Tanaka Akira <akr@...>
2009/02/04
In article <1A717293-1636-4FD3-87FE-388EF5FFF560@takao7.net>,
[#37897] Re: $LOAD_PATHとバージョンの運用の関係
— "U.Nakamura" <usa@...>
2009/02/04
こんにちは、なかむら(う)です。
[#37749] $LOAD_PATHのconfigureによる指定 — akira yamada / やまだあきら <akira@...>
Ruby 1.9.1RC1では$LOAD_PATHの中の
6 messages
2009/01/09
[#37765] AddrInfo.list_ipaddr — Tanaka Akira <akr@...>
提案なんですが、ホストが持っている IP アドレスのリストを返す
4 messages
2009/01/13
[#37783] [Feature:1.9] backlog option for TCPServer and UNIXServer — Nobuyoshi Nakada <nobu@...>
なかだです。
5 messages
2009/01/18
[#37785] Re: [Feature:1.9] backlog option for TCPServer and UNIXServer
— Tanaka Akira <akr@...>
2009/01/19
In article <20090118200251.12428E0D32@mail.bc9.jp>,
[#37823] [Feature #1038] Signal.trapのcommandにSymbol — Kazuhiro NISHIYAMA <redmine@...>
Feature #1038: Signal.trapのcommandにSymbol
4 messages
2009/01/22
[ruby-dev:37783] [Feature:1.9] backlog option for TCPServer and UNIXServer
From:
Nobuyoshi Nakada <nobu@...>
Date:
2009-01-18 20:01:28 UTC
List:
ruby-dev #37783
なかだです。
以前からときおり要望のあったので、{TCP,UNIX}Server.newで
listen()するbacklogの数を指定できるようにしてみました。
# [ruby-dev:35379]が入るともう少し簡単に書けるんですが。
Index: ext/socket/rubysocket.h
===================================================================
--- ext/socket/rubysocket.h (revision 21650)
+++ ext/socket/rubysocket.h (working copy)
@@ -215,4 +215,10 @@ VALUE s_accept(VALUE klass, int fd, stru
VALUE s_accept_nonblock(VALUE klass, rb_io_t *fptr, struct sockaddr *sockaddr, socklen_t *len);
+struct sock_svrinit_options {
+ int backlog;
+};
+int sock_svrinit_opt(VALUE arg, struct sock_svrinit_options *opt);
+VALUE sock_svrinit(VALUE sock, const struct sock_svrinit_options *opt);
+
void Init_basicsocket(void);
void Init_ipsocket(void);
Index: ext/socket/unixserver.c
===================================================================
--- ext/socket/unixserver.c (revision 21650)
+++ ext/socket/unixserver.c (working copy)
@@ -23,7 +23,13 @@
*/
static VALUE
-unix_svr_init(VALUE sock, VALUE path)
+unix_svr_init(int argc, VALUE *argv, VALUE sock)
{
- return init_unixsock(sock, path, 1);
+ VALUE path;
+ struct sock_svrinit_options opt;
+
+ if (argc > 1 && sock_svrinit_opt(argv[argc-1], &opt)) --argc;
+ if (argc == 1) path = argv[0];
+ else rb_scan_args(argc, argv, "1", &path);
+ return sock_svrinit(init_unixsock(sock, path, 1), &opt);
}
@@ -140,5 +146,5 @@ Init_unixserver(void)
#ifdef HAVE_SYS_UN_H
rb_cUNIXServer = rb_define_class("UNIXServer", rb_cUNIXSocket);
- rb_define_method(rb_cUNIXServer, "initialize", unix_svr_init, 1);
+ rb_define_method(rb_cUNIXServer, "initialize", unix_svr_init, -1);
rb_define_method(rb_cUNIXServer, "accept", unix_accept, 0);
rb_define_method(rb_cUNIXServer, "accept_nonblock", unix_accept_nonblock, 0);
Index: ext/socket/tcpserver.c
===================================================================
--- ext/socket/tcpserver.c (revision 21650)
+++ ext/socket/tcpserver.c (working copy)
@@ -28,9 +28,12 @@ tcp_svr_init(int argc, VALUE *argv, VALU
{
VALUE arg1, arg2;
+ struct sock_svrinit_options opt;
+ if (argc > 1 && sock_svrinit_opt(argv[argc-1], &opt)) --argc;
if (rb_scan_args(argc, argv, "11", &arg1, &arg2) == 2)
- return init_inetsock(sock, arg1, arg2, Qnil, Qnil, INET_SERVER);
+ sock = init_inetsock(sock, arg1, arg2, Qnil, Qnil, INET_SERVER);
else
- return init_inetsock(sock, Qnil, arg1, Qnil, Qnil, INET_SERVER);
+ sock = init_inetsock(sock, Qnil, arg1, Qnil, Qnil, INET_SERVER);
+ return sock_svrinit(sock, &opt);
}
Index: ext/socket/ipsocket.c
===================================================================
--- ext/socket/ipsocket.c (revision 21650)
+++ ext/socket/ipsocket.c (working copy)
@@ -101,7 +101,4 @@ init_inetsock_internal(struct inetsock_a
arg->fd = -1;
- if (type == INET_SERVER)
- listen(fd, 5);
-
/* create new instance */
return init_sock(arg->sock, fd);
Index: ext/socket/socket.c
===================================================================
--- ext/socket/socket.c (revision 21635)
+++ ext/socket/socket.c (working copy)
@@ -18,4 +18,33 @@ setup_domain_and_type(VALUE domain, int
}
+int
+sock_svrinit_opt(VALUE arg, struct sock_svrinit_options *opt)
+{
+ opt->backlog = 5;
+ if (TYPE(arg) == T_HASH) {
+ VALUE x;
+ ID id_listen;
+ CONST_ID(id_listen, "listen");
+ x = rb_hash_lookup(arg, ID2SYM(id_listen));
+ if (!NIL_P(x) && (opt->backlog = NUM2INT(x)) < 0) {
+ rb_raise(rb_eArgError, "negative backlog length: %d", opt->backlog)
+ }
+ return Qtrue;
+ }
+ return Qfalse;
+}
+
+VALUE
+sock_svrinit(VALUE sock, const struct sock_svrinit_options *opt)
+{
+ rb_io_t *fptr;
+
+ GetOpenFile(sock, fptr);
+ if (opt->backlog > 0 && listen(fptr->fd, opt->backlog)) {
+ rb_sys_fail("listen");
+ }
+ return sock;
+}
+
/*
* call-seq:
Index: ext/socket/unixsocket.c
===================================================================
--- ext/socket/unixsocket.c (revision 21650)
+++ ext/socket/unixsocket.c (working copy)
@@ -66,6 +66,4 @@ init_unixsock(VALUE sock, VALUE path, in
}
- if (server) listen(fd, 5);
-
init_sock(sock, fd);
if (server) {
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦