aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2015-10-27 13:06:31 +0900
committerKazuki Yamaguchi <k@rhe.jp>2015-10-27 13:06:31 +0900
commitbeb4306b70e6fe8296fa9f9cc93a179bec3540a4 (patch)
tree6994832cfbeb22d54c6700082371f294de37592d
parentb7766e45f9e436e766ddb7b609957c48574c5c59 (diff)
downloadplum-beb4306b70e6fe8296fa9f9cc93a179bec3540a4.tar.gz
frame_factory: dup payload if payload's encoding is not binary
-rw-r--r--lib/plum/frame_factory.rb6
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/plum/frame_factory.rb b/lib/plum/frame_factory.rb
index 51908ec..b4c1c01 100644
--- a/lib/plum/frame_factory.rb
+++ b/lib/plum/frame_factory.rb
@@ -41,9 +41,10 @@ module Plum
# @param payload [String] 8 bytes length data to send.
# @overload ping(payload = "plum\x00\x00\x00\x00")
# @param payload [String] 8 bytes length data to send.
- def ping(arg1 = "plum\x00\x00\x00\x00", arg2 = nil)
+ def ping(arg1 = "plum\x00\x00\x00\x00".b, arg2 = nil)
if !arg2
raise ArgumentError.new("data must be 8 octets") if arg1.bytesize != 8
+ arg1 = arg1.b if arg1.encoding != Encoding::BINARY
Frame.new(type: :ping, stream_id: 0, payload: arg1)
else
Frame.new(type: :ping, stream_id: 0, flags: [:ack], payload: arg2)
@@ -55,10 +56,11 @@ module Plum
# @param payload [String] Payload.
# @param flags [Array<Symbol>] Flags.
def data(stream_id, payload, *flags)
+ payload = payload.b if payload && payload.encoding != Encoding::BINARY
Frame.new(type: :data, stream_id: stream_id, flags: flags, payload: payload)
end
- # Creates a DATA frame.
+ # Creates a HEADERS frame.
# @param stream_id [Integer] The stream ID.
# @param encoded [String] Headers.
# @param flags [Array<Symbol>] Flags.