1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* ext/socket/socket.c (init_sock): sockets should be binmode.

* test/socket/test_tcp.rb (test_encoding): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19816 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
shugo 2008-10-17 02:50:43 +00:00
parent 68222eb417
commit 5545c5aafa
3 changed files with 26 additions and 3 deletions

View file

@ -1,3 +1,9 @@
Fri Oct 17 11:48:18 2008 Shugo Maeda <shugo@ruby-lang.org>
* ext/socket/socket.c (init_sock): sockets should be binmode.
* test/socket/test_tcp.rb (test_encoding): ditto.
Fri Oct 17 10:26:13 2008 NAKAMURA Usaku <usa@ruby-lang.org> Fri Oct 17 10:26:13 2008 NAKAMURA Usaku <usa@ruby-lang.org>
* tool/insns2vm.rb: remove -Kn option in shebang line because it's * tool/insns2vm.rb: remove -Kn option in shebang line because it's

View file

@ -241,9 +241,7 @@ init_sock(VALUE sock, int fd)
MakeOpenFile(sock, fp); MakeOpenFile(sock, fp);
fp->fd = fd; fp->fd = fd;
fp->mode = FMODE_READWRITE|FMODE_DUPLEX; fp->mode = FMODE_READWRITE|FMODE_DUPLEX;
#if defined(_WIN32) || defined(__CYGWIN__) || defined(__EMX__) rb_io_binmode(sock);
fp->mode |= FMODE_BINMODE;
#endif
if (do_not_reverse_lookup) { if (do_not_reverse_lookup) {
fp->mode |= FMODE_NOREVLOOKUP; fp->mode |= FMODE_NOREVLOOKUP;
} }

View file

@ -21,4 +21,23 @@ assert false, "TODO: doesn't work on mswin32/64" if /mswin/ =~ RUBY_PLATFORM
th.kill th.kill
th.join th.join
end end
def test_encoding
svr = TCPServer.new("localhost", 0)
th = Thread.new {
c = svr.accept
c.write "foo\r\n"
c.close
}
addr = svr.addr
sock = TCPSocket.open(addr[2], addr[1])
assert_equal(true, sock.binmode?)
s = sock.gets
assert_equal("foo\r\n", s)
assert_equal(Encoding.find("ASCII-8BIT"), s.encoding)
ensure
th.kill
th.join
sock.close if sock
end
end if defined?(TCPSocket) end if defined?(TCPSocket)