summaryrefslogtreecommitdiff
path: root/res/res_http_websocket.c
diff options
context:
space:
mode:
authorMark Michelson <mmichelson@digium.com>2015-07-29 14:35:58 -0500
committerMark Michelson <mmichelson@digium.com>2015-07-29 14:47:39 -0500
commit5fcd1bc556af56017f35021062843db8d1bc6b4d (patch)
treef46c8d6bbd226780c1bc9a3115bf54d85aa9f876 /res/res_http_websocket.c
parent687597ca8c2412f79b79f9b13e17f3ec0ff0ce0c (diff)
res_http_websocket: Properly encode 64 bit payload
A test agent was continuously failing all ARI tests when run against Asterisk 13. As it turns out, the reason for this is that on those test runs, for some reason we decided to use the super extended 64 bit payload length for websocket text frames instead of the extended 16 bit payload length. For 64-bit payloads, the expected byte order over the network is 7, 6, 5, 4, 3, 2, 1, 0 However, we were sending the payload as 3, 2, 1, 0, 7, 6, 5, 4 This meant that we were saying to expect an absolutely MASSIVE payload to arrive. Since we did not follow through on this expected payload size, the client would sit patiently waiting for the rest of the payload to arrive until the test would time out. With this change, we use the htobe64() function instead of htonl() so that a 64-bit byte-swap is performed instead of a 32 bit byte-swap. Change-Id: Ibcd8552392845fbcdd017a8c8c1043b7fe35964a
Diffstat (limited to 'res/res_http_websocket.c')
-rw-r--r--res/res_http_websocket.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/res/res_http_websocket.c b/res/res_http_websocket.c
index ecae03919..b3ad2f76c 100644
--- a/res/res_http_websocket.c
+++ b/res/res_http_websocket.c
@@ -328,7 +328,7 @@ int AST_OPTIONAL_API_NAME(ast_websocket_write)(struct ast_websocket *session, en
if (length == 126) {
put_unaligned_uint16(&frame[2], htons(actual_length));
} else if (length == 127) {
- put_unaligned_uint64(&frame[2], htonl(actual_length));
+ put_unaligned_uint64(&frame[2], htobe64(actual_length));
}
ao2_lock(session);