diff options
| author | Takeshi Watanabe <[email protected]> | 2017-12-09 18:44:24 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2017-12-14 00:05:23 +0900 |
| commit | 949bf6ca4306125b0ba51d8b09a1f4d642c24753 (patch) | |
| tree | 0c719cb0cfc4bfa1b897892ac47722f9fec1943f /mrbgems/mruby-socket | |
| parent | 2300c9f7373e3785d36323b5d2820efb40fb1fab (diff) | |
| download | mruby-949bf6ca4306125b0ba51d8b09a1f4d642c24753.tar.gz mruby-949bf6ca4306125b0ba51d8b09a1f4d642c24753.zip | |
Fix socket closing by using `closesocket` API in windows instead.
Diffstat (limited to 'mrbgems/mruby-socket')
| -rw-r--r-- | mrbgems/mruby-socket/mrblib/socket.rb | 1 | ||||
| -rw-r--r-- | mrbgems/mruby-socket/src/socket.c | 18 | ||||
| -rw-r--r-- | mrbgems/mruby-socket/test/unix.rb | 4 |
3 files changed, 19 insertions, 4 deletions
diff --git a/mrbgems/mruby-socket/mrblib/socket.rb b/mrbgems/mruby-socket/mrblib/socket.rb index 53c20e3cc..d817300c6 100644 --- a/mrbgems/mruby-socket/mrblib/socket.rb +++ b/mrbgems/mruby-socket/mrblib/socket.rb @@ -178,6 +178,7 @@ class BasicSocket def initialize(*args) super(*args) + self.is_socket = true @do_not_reverse_lookup = @@do_not_reverse_lookup end diff --git a/mrbgems/mruby-socket/src/socket.c b/mrbgems/mruby-socket/src/socket.c index 76eb8a674..937c33011 100644 --- a/mrbgems/mruby-socket/src/socket.c +++ b/mrbgems/mruby-socket/src/socket.c @@ -40,6 +40,8 @@ #include "mruby/variable.h" #include "error.h" +#include "mruby/ext/io.h" + #define E_SOCKET_ERROR (mrb_class_get(mrb, "SocketError")) #if !defined(mrb_cptr) @@ -480,6 +482,21 @@ mrb_basicsocket_shutdown(mrb_state *mrb, mrb_value self) } static mrb_value +mrb_basicsocket_set_is_socket(mrb_state *mrb, mrb_value self) +{ + mrb_bool b; + struct mrb_io *io_p; + mrb_get_args(mrb, "b", &b); + + io_p = (struct mrb_io*)DATA_PTR(self); + if (io_p) { + io_p->is_socket = b; + } + + return mrb_bool_value(b); +} + +static mrb_value mrb_ipsocket_ntop(mrb_state *mrb, mrb_value klass) { mrb_int af, n; @@ -839,6 +856,7 @@ mrb_mruby_socket_gem_init(mrb_state* mrb) // #sendmsg_nonblock mrb_define_method(mrb, bsock, "setsockopt", mrb_basicsocket_setsockopt, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(2)); mrb_define_method(mrb, bsock, "shutdown", mrb_basicsocket_shutdown, MRB_ARGS_OPT(1)); + mrb_define_method(mrb, bsock, "is_socket=", mrb_basicsocket_set_is_socket, MRB_ARGS_REQ(1)); ipsock = mrb_define_class(mrb, "IPSocket", bsock); mrb_define_class_method(mrb, ipsock, "ntop", mrb_ipsocket_ntop, MRB_ARGS_REQ(1)); diff --git a/mrbgems/mruby-socket/test/unix.rb b/mrbgems/mruby-socket/test/unix.rb index 1eb7365c5..88ad17101 100644 --- a/mrbgems/mruby-socket/test/unix.rb +++ b/mrbgems/mruby-socket/test/unix.rb @@ -1,5 +1,3 @@ -unless SocketTest.win? - def unixserver_test_block path = SocketTest.tmppath File.unlink path rescue nil @@ -126,5 +124,3 @@ assert('UNIXSocket#recvfrom') do # a[1][1] would be "" or something end end - -end # win? |
