Skip to content

Commit

Permalink
Fix parsing empty Publish frame
Browse files Browse the repository at this point in the history
  • Loading branch information
HJianBo committed Jan 2, 2020
1 parent a652cb7 commit 4fa300c
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 5 deletions.
3 changes: 3 additions & 0 deletions CocoaMQTTTests/FrameTests.swift
Expand Up @@ -148,6 +148,9 @@ class FrameTests: XCTestCase {
XCTAssertEqual(f0.retained, true)
f0.retained = false
XCTAssertEqual(f0.retained, false)

let f1 = FramePublish(fixedHeader: 0x30, bytes:[0, 60, 47, 114, 101, 109, 111, 116, 101, 97, 112, 112, 47, 109, 111, 98, 105, 108, 101, 47, 98, 114, 111, 97, 100, 99, 97, 115, 116, 47, 112, 108, 97, 116, 102, 111, 114, 109, 95, 115, 101, 114, 118, 105, 99, 101, 47, 97, 99, 116, 105, 111, 110, 115, 47, 116, 118, 115, 108, 101, 101, 112])
XCTAssertEqual(f1?.payload().count, 0)
}

func testFramePubAck() {
Expand Down
9 changes: 4 additions & 5 deletions Source/FramePublish.swift
Expand Up @@ -85,11 +85,10 @@ extension FramePublish: InitialWithBytes {
}

// payload
let end = bytes.count - 1

if (end - pos >= 0) {
_payload = [UInt8](bytes[pos...end])
// receives an empty message
if (pos == bytes.count) {
_payload = []
} else if (pos < bytes.count) {
_payload = [UInt8](bytes[pos..<bytes.count])
} else {
return nil
}
Expand Down

0 comments on commit 4fa300c

Please sign in to comment.