Skip to content

Commit 2a221e1

Browse files
committed
Merge in 'release/7.0' changes
2 parents cd77db2 + ce5d73c commit 2a221e1

File tree

2 files changed

+36
-1
lines changed

2 files changed

+36
-1
lines changed

src/SignalR/clients/ts/signalr-protocol-msgpack/src/MessagePackHubProtocol.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,8 @@ export class MessagePackHubProtocol implements IHubProtocol {
284284
}
285285

286286
private _writeCompletion(completionMessage: CompletionMessage): ArrayBuffer {
287-
const resultKind = completionMessage.error ? this._errorResult : completionMessage.result ? this._nonVoidResult : this._voidResult;
287+
const resultKind = completionMessage.error ? this._errorResult :
288+
(completionMessage.result !== undefined) ? this._nonVoidResult : this._voidResult;
288289

289290
let payload: any;
290291
switch (resultKind) {

src/SignalR/clients/ts/signalr-protocol-msgpack/tests/MessagePackHubProtocol.test.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,40 @@ describe("MessagePackHubProtocol", () => {
218218
expect(new Uint8Array(buffer)).toEqual(payload);
219219
});
220220

221+
it("can write completion message with false result", () => {
222+
const payload = new Uint8Array([
223+
0x09, // length prefix
224+
0x95, // message array length = 5 (fixarray)
225+
0x03, // type = 3 = Completion
226+
0x80, // headers
227+
0xa3, // invocationID = string length 3
228+
0x61, // a
229+
0x62, // b
230+
0x63, // c
231+
0x03, // result type, 3 - non-void result
232+
0xc2, // false
233+
]);
234+
const buffer = new MessagePackHubProtocol().writeMessage({ type: MessageType.Completion, invocationId: "abc", result: false });
235+
expect(new Uint8Array(buffer)).toEqual(payload);
236+
});
237+
238+
it("can write completion message with null result", () => {
239+
const payload = new Uint8Array([
240+
0x09, // length prefix
241+
0x95, // message array length = 5 (fixarray)
242+
0x03, // type = 3 = Completion
243+
0x80, // headers
244+
0xa3, // invocationID = string length 3
245+
0x61, // a
246+
0x62, // b
247+
0x63, // c
248+
0x03, // result type, 3 - non-void result
249+
0xc0, // null
250+
]);
251+
const buffer = new MessagePackHubProtocol().writeMessage({ type: MessageType.Completion, invocationId: "abc", result: null });
252+
expect(new Uint8Array(buffer)).toEqual(payload);
253+
});
254+
221255
it("will preserve double precision", () => {
222256
const invocation = {
223257
arguments: [Number(0.005)],

0 commit comments

Comments
 (0)