From: "とみたまさひろ" Date: 1999-09-22T10:39:21+09:00 Subject: [ruby-dev:7895] SOCKS5 とみたです。 私の手元にあった socks5 ライブラリでは、ruby の socket モジュールがうま く動かなかったので、パッチを作りました。 一応動くようになってますし、socks5 ライブラリがなければ今まで通りの動作 をするはずですが、socks については全然詳しくないので、変なことをやってい るかもしれません (__; # socks 使用時に NONBLOCK で connect() しようとするとうまく動かなかった # ので、ブロックするようにしちゃってます。いいのかな… (^^; -- とみたまさひろ diff -c socket.orig/extconf.rb socket/extconf.rb *** socket.orig/extconf.rb Tue Aug 24 12:39:14 1999 --- socket/extconf.rb Wed Sep 22 09:20:11 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 -c socket.orig/socket.c socket/socket.c *** socket.orig/socket.c Fri Aug 13 14:37:50 1999 --- socket/socket.c Wed Sep 22 09:49:24 1999 *************** *** 63,71 **** --- 63,75 ---- #ifdef SOCKS VALUE rb_cSOCKSSocket; + #ifdef SOCKS5 + #include + #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); }