Sha256: f62a43714558bbe5c8f499b4132b9108d6d893c3af66ff90b446f548eda96043

Contents?: true

Size: 1.1 KB

Versions: 43

Compression:

Stored size: 1.1 KB

Contents

/************************************************

  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 rsock_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

/*
 * Document-class: ::SOCKSSocket < TCPSocket
 *
 * SOCKSSocket class
 */
void
rsock_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
}

Version data entries

43 entries across 43 versions & 2 rubygems

Version Path
rhodes-5.5.18 platform/shared/ruby/ext/socket_192/sockssocket.c
rhodes-5.5.17 platform/shared/ruby/ext/socket_192/sockssocket.c
rhodes-5.5.15 platform/shared/ruby/ext/socket_192/sockssocket.c
rhodes-5.5.0.22 platform/shared/ruby/ext/socket_192/sockssocket.c
rhodes-5.5.2 platform/shared/ruby/ext/socket_192/sockssocket.c
rhodes-5.5.0.7 platform/shared/ruby/ext/socket_192/sockssocket.c
rhodes-5.5.0.3 platform/shared/ruby/ext/socket_192/sockssocket.c
rhodes-5.5.0 platform/shared/ruby/ext/socket_192/sockssocket.c
tauplatform-1.0.3 platform/shared/ruby/ext/socket_192/sockssocket.c
tauplatform-1.0.2 platform/shared/ruby/ext/socket_192/sockssocket.c
tauplatform-1.0.1 platform/shared/ruby/ext/socket_192/sockssocket.c
rhodes-3.5.1.12 platform/shared/ruby/ext/socket_192/sockssocket.c
rhodes-3.3.5 platform/shared/ruby/ext/socket_192/sockssocket.c
rhodes-3.4.2 platform/shared/ruby/ext/socket_192/sockssocket.c
rhodes-3.3.4 platform/shared/ruby/ext/socket_192/sockssocket.c
rhodes-3.3.3 platform/shared/ruby/ext/socket_192/sockssocket.c
rhodes-3.3.3.beta.4 platform/shared/ruby/ext/socket_192/sockssocket.c
rhodes-3.3.3.beta.3 platform/shared/ruby/ext/socket_192/sockssocket.c
rhodes-3.3.3.beta.2 platform/shared/ruby/ext/socket_192/sockssocket.c
rhodes-3.3.3.beta.1 platform/shared/ruby/ext/socket_192/sockssocket.c