[#7785] rb2c — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

28 messages 1999/09/02

[#7845] [Q] irb and SizedQueue — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

14 messages 1999/09/15

[ruby-dev:7895] SOCKS5

From: とみたまさひろ <tommy@...>
Date: 1999-09-22 01:39:21 UTC
List: ruby-dev #7895
とみたです。

私の手元にあった socks5 ライブラリでは、ruby の socket モジュールがうま
く動かなかったので、パッチを作りました。

一応動くようになってますし、socks5 ライブラリがなければ今まで通りの動作
をするはずですが、socks については全然詳しくないので、変なことをやってい
るかもしれません (__;

# socks 使用時に NONBLOCK で connect() しようとするとうまく動かなかった
# ので、ブロックするようにしちゃってます。いいのかな… (^^;

--
とみたまさひろ <tommy@tmtm.org>


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 <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);
  	}

In This Thread

Prev Next