mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
2d958b7fb0
sockssocket.c. [ruby-dev:37834] * sockssocket.c (socks_init): don't omit "int" type. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21804 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
56 lines
1 KiB
C
56 lines
1 KiB
C
/************************************************
|
|
|
|
sockssocket.c -
|
|
|
|
created at: Thu Mar 31 12:21:29 JST 1994
|
|
|
|
Copyright (C) 1993-2007 Yukihiro Matsumoto
|
|
|
|
************************************************/
|
|
|
|
#include "rubysocket.h"
|
|
|
|
#ifdef SOCKS
|
|
static VALUE
|
|
socks_init(VALUE sock, VALUE host, VALUE serv)
|
|
{
|
|
static int init = 0;
|
|
|
|
if (init == 0) {
|
|
SOCKSinit("ruby");
|
|
init = 1;
|
|
}
|
|
|
|
return init_inetsock(sock, host, serv, Qnil, Qnil, INET_SOCKS);
|
|
}
|
|
|
|
#ifdef SOCKS5
|
|
static VALUE
|
|
socks_s_close(VALUE sock)
|
|
{
|
|
rb_io_t *fptr;
|
|
|
|
if (rb_safe_level() >= 4 && !OBJ_TAINTED(sock)) {
|
|
rb_raise(rb_eSecurityError, "Insecure: can't close socket");
|
|
}
|
|
GetOpenFile(sock, fptr);
|
|
shutdown(fptr->fd, 2);
|
|
return rb_io_close(sock);
|
|
}
|
|
#endif
|
|
#endif
|
|
|
|
/*
|
|
* SOCKSSocket class
|
|
*/
|
|
void
|
|
Init_sockssocket(void)
|
|
{
|
|
#ifdef SOCKS
|
|
rb_cSOCKSSocket = rb_define_class("SOCKSSocket", rb_cTCPSocket);
|
|
rb_define_method(rb_cSOCKSSocket, "initialize", socks_init, 2);
|
|
#ifdef SOCKS5
|
|
rb_define_method(rb_cSOCKSSocket, "close", socks_s_close, 0);
|
|
#endif
|
|
#endif
|
|
}
|