Skip to content

Commit c959729

Browse files
authored
Merge pull request #771 from lwoggardner/readbyte
Add SSLSocket#readbyte
2 parents bb45527 + c40f707 commit c959729

File tree

4 files changed

+44
-0
lines changed

4 files changed

+44
-0
lines changed

lib/openssl/buffering.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,12 @@ def getbyte
107107
read(1)&.ord
108108
end
109109

110+
# Get the next 8bit byte. Raises EOFError on EOF
111+
def readbyte
112+
raise EOFError if eof?
113+
getbyte
114+
end
115+
110116
##
111117
# Reads _size_ bytes from the stream. If _buf_ is provided it must
112118
# reference a string which will receive the data.

test/openssl/test_pair.rb

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,27 @@ def test_getc
101101
}
102102
end
103103

104+
def test_getbyte
105+
ssl_pair {|s1, s2|
106+
s1 << "a"
107+
assert_equal(97, s2.getbyte)
108+
}
109+
end
110+
111+
def test_readbyte
112+
ssl_pair {|s1, s2|
113+
s1 << "b"
114+
assert_equal(98, s2.readbyte)
115+
}
116+
end
117+
118+
def test_readbyte_eof
119+
ssl_pair {|s1, s2|
120+
s2.close
121+
assert_raise(EOFError) { s1.readbyte }
122+
}
123+
end
124+
104125
def test_gets
105126
ssl_pair {|s1, s2|
106127
s1 << "abc\n\n$def123ghi"

test/openssl/test_ssl.rb

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,19 @@ def test_getbyte
248248
}
249249
end
250250

251+
def test_readbyte
252+
start_server { |port|
253+
server_connect(port) { |ssl|
254+
str = +("x" * 100 + "\n")
255+
ssl.syswrite(str)
256+
newstr = str.bytesize.times.map { |i|
257+
ssl.readbyte
258+
}.pack("C*")
259+
assert_equal(str, newstr)
260+
}
261+
}
262+
end
263+
251264
def test_sync_close
252265
start_server do |port|
253266
begin

test/openssl/ut_eof.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ def test_getbyte_eof
88
open_file("") {|f| assert_nil f.getbyte }
99
end
1010

11+
def test_readbyte_eof
12+
open_file("") {|f| assert_raise(EOFError) { f.readbyte } }
13+
end
14+
1115
def test_eof_0
1216
open_file("") {|f|
1317
assert_equal("", f.read(0))

0 commit comments

Comments
 (0)