[#7779] http-access-0.0.2 patch — TAKAHASHI Masayoshi <maki@...>
英文メールの書き方を勉強中の高橋です。ごぶさたしてます。
11 messages
1999/09/01
[#7780] Re: http-access-0.0.2 patch
— Takahiro Maebashi <maebashi@...>
1999/09/01
前橋です。
[#7788] Re: http-access-0.0.2 patch
— TAKAHASHI Masayoshi <maki@...>
1999/09/02
高橋征義です。
[#7817] Re: http-access-0.0.2 patch
— setsura <setsura@...>
1999/09/07
はじめまして str です。
[#7822] Re: http-access-0.0.2 patch
— "NAKAMURA, Hiroshi" <nakahiro@...>
1999/09/08
なひです.
[#7824] Re: http-access-0.0.2 patch
— setsura <setsura@...>
1999/09/08
[#7825] Re: http-access-0.0.2 patch
— "NAKAMURA, Hiroshi" <nakahiro@...>
1999/09/09
なひです.
[#7785] rb2c — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
28 messages
1999/09/02
[#7790] Re: rb2c
— Kazuhiro HIWADA <hiwada@...>
1999/09/02
ひわだです。こんばんは。
[#7786] Re: rb2c
— WATANABE Hirofumi <watanabe@...>
1999/09/02
わたなべです.
[#7791] Re: rb2c
— Kazuhiro HIWADA <hiwada@...>
1999/09/02
ひわだです。
[#7840] socket and buffering — Masaki Fukushima <fukusima@...>
福嶋です。
12 messages
1999/09/13
[#7842] Re: socket and buffering
— matz@... (Yukihiro Matsumoto)
1999/09/13
まつもと ゆきひろです
[#7844] Re: socket and buffering
— Masaki Fukushima <fukusima@...>
1999/09/14
福嶋です。
[#7847] Re: socket and buffering
— matz@... (Yukihiro Matsumoto)
1999/09/15
まつもと ゆきひろです
[#7858] Re: socket and buffering
— Masaki Fukushima <fukusima@...>
1999/09/17
福嶋です。
[#7845] [Q] irb and SizedQueue — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
14 messages
1999/09/15
[#7848] Re: [Q] irb and SizedQueue
— matz@... (Yukihiro Matsumoto)
1999/09/15
まつもと ゆきひろです
[#7853] Re: [Q] irb and SizedQueue
— keiju@... (石塚圭樹)
1999/09/16
けいじゅ@日本ラショナルソフトウェアです.
[#7850] Re: [Q] irb and SizedQueue
— matz@... (Yukihiro Matsumoto)
1999/09/15
まつもと ゆきひろです
[#7846] newline code and __END__, here document — nobu.nakada@...
なかだです。
5 messages
1999/09/15
[#7886] fnmatch (Re: Dir.glob) — WATANABE Hirofumi <eban@...>
わたなべです.
5 messages
1999/09/20
[#7895] SOCKS5 — とみたまさひろ <tommy@...>
とみたです。
7 messages
1999/09/22
[#7902] toy JIT compiler — Kazuhiro HIWADA <hiwada@...>
ひわだです。どうも。
7 messages
1999/09/22
[#7914] SEGV at st.c — Kazuhiro Yoshida <moriq@...2.seikyou.ne.jp>
もりきゅうです.
7 messages
1999/09/25
[#7915] Re: SEGV at st.c — Kazuhiro Yoshida <moriq@...2.seikyou.ne.jp>
もりきゅうです.
1 message
1999/09/25
[#7917] [PATCH] strftime "%z", timezone — WATANABE Hirofumi <eban@...>
わたなべです.
12 messages
1999/09/25
[#7919] Re: [PATCH] strftime "%z", timezone
— matz@... (Yukihiro Matsumoto)
1999/09/25
まつもと ゆきひろです
[#7924] Re: [PATCH] strftime "%z", timezone
— WATANABE Hirofumi <eban@...>
1999/09/26
わたなべです.
[ruby-dev:7940] Re: SOCKS5
From:
とみたまさひろ <tommy@...>
Date:
1999-09-28 09:05:28 UTC
List:
ruby-dev #7940
とみたです。
At Wed, 22 Sep 1999 10:39:21 +0900,
とみたまさひろ <tommy@tmtm.org> wrote:
> 私の手元にあった socks5 ライブラリでは、ruby の socket モジュールがうま
> く動かなかったので、パッチを作りました。
>
> 一応動くようになってますし、socks5 ライブラリがなければ今まで通りの動作
> をするはずですが、socks については全然詳しくないので、変なことをやってい
> るかもしれません (__;
やはり不十分でした。うまくいかなくて4日ほど、socks ライブラリと rftp と
ruby のソースと格闘してました。
socks を使った場合 close() も socks ライブラリの close() を使わないとい
けなかったんですが、close() は io.c にあるため socks ライブラリのを使え
ていなかったのが原因でした。
io.c の close() をいじるのはイヤだったので、苦肉の策で shutdown() してか
ら rb_io_close を呼ぶようにしました。動いてるからまあいいでしょう (^^;
gethostbyname も SOCKS ライブラリのを使うようにしたので、SOCKS 経由でド
メイン名が引けます(といっても <socks.h> を include しただけ)。
ということで新たにパッチを添付します。ruby 1.4.2 のオリジナルに対するパッ
チになっています。
--
とみたまさひろ <tommy@tmtm.org>
diff -rc socket.orig/extconf.rb socket/extconf.rb
*** socket.orig/extconf.rb Tue Aug 24 12:39:14 1999
--- socket/extconf.rb Tue Sep 28 16:01:38 1999
***************
*** 271,277 ****
have_func("uname")
end
if ENV["SOCKS_SERVER"] or enable_config("socks", false)
! if have_library("socks", "Rconnect")
$CFLAGS="-DSOCKS"
end
end
--- 271,279 ----
have_func("uname")
end
if ENV["SOCKS_SERVER"] or enable_config("socks", false)
! if have_library("socks5", "SOCKSinit")
! $CFLAGS="-DSOCKS5 -DSOCKS"
! elsif have_library("socks", "Rconnect")
$CFLAGS="-DSOCKS"
end
end
diff -rc socket.orig/getaddrinfo.c socket/getaddrinfo.c
*** socket.orig/getaddrinfo.c Fri Aug 13 14:37:50 1999
--- socket/getaddrinfo.c Tue Sep 28 16:15:30 1999
***************
*** 67,72 ****
--- 67,76 ----
#include <stddef.h>
#include <ctype.h>
+ #ifdef SOCKS5
+ #include <socks.h>
+ #endif
+
#include "config.h"
#include "addrinfo.h"
#include "sockport.h"
diff -rc socket.orig/getnameinfo.c socket/getnameinfo.c
*** socket.orig/getnameinfo.c Fri Aug 13 14:37:50 1999
--- socket/getnameinfo.c Tue Sep 28 16:02:55 1999
***************
*** 56,61 ****
--- 56,65 ----
#include <string.h>
#include <stddef.h>
+ #ifdef SOCKS5
+ #include <socks.h>
+ #endif
+
#include "config.h"
#include "addrinfo.h"
#include "sockport.h"
diff -rc socket.orig/socket.c socket/socket.c
*** socket.orig/socket.c Fri Aug 13 14:37:50 1999
--- socket/socket.c Tue Sep 28 16:22:04 1999
***************
*** 63,71 ****
--- 63,75 ----
#ifdef SOCKS
VALUE rb_cSOCKSSocket;
+ #ifdef SOCKS5
+ #include <socks.h>
+ #else
void SOCKSinit();
int Rconnect();
#endif
+ #endif
#define INET_CLIENT 0
#define INET_SERVER 1
***************
*** 631,641 ****
# define NONBLOCKING O_NONBLOCK
#endif
#endif
fcntl(fd, F_SETFL, mode|NONBLOCKING);
#endif /* HAVE_FCNTL */
for (;;) {
! #ifdef SOCKS
if (socks) {
status = Rconnect(fd, sockaddr, len);
}
--- 635,648 ----
# define NONBLOCKING O_NONBLOCK
#endif
#endif
+ #ifdef SOCKS5
+ if (!socks)
+ #endif
fcntl(fd, F_SETFL, mode|NONBLOCKING);
#endif /* HAVE_FCNTL */
for (;;) {
! #if defined(SOCKS) && !defined(SOCKS5)
if (socks) {
status = Rconnect(fd, sockaddr, len);
}
***************
*** 773,778 ****
--- 780,799 ----
Check_SafeStr(host);
return open_inet(class, host, serv, INET_SOCKS);
}
+
+ #ifdef SOCKS5
+ static VALUE
+ socks_s_close(sock)
+ VALUE sock;
+ {
+ OpenFile *fptr;
+
+ GetOpenFile(sock, fptr);
+ shutdown(fileno(fptr->f), 2);
+ shutdown(fileno(fptr->f2), 2);
+ return rb_io_close(sock);
+ }
+ #endif
#endif
/*
***************
*** 1869,1874 ****
--- 1890,1898 ----
rb_define_global_const("SOCKSsocket", rb_cSOCKSSocket);
rb_define_singleton_method(rb_cSOCKSSocket, "open", socks_s_open, 2);
rb_define_singleton_method(rb_cSOCKSSocket, "new", socks_s_open, 2);
+ #ifdef SOCKS5
+ rb_define_method(rb_cSOCKSSocket, "close", socks_s_close, 0);
+ #endif
#endif
rb_cTCPServer = rb_define_class("TCPServer", rb_cTCPSocket);