diff options
author | Joshua Colp <jcolp@digium.com> | 2015-08-06 04:52:10 -0500 |
---|---|---|
committer | Gerrit Code Review <gerrit2@gerrit.digium.api> | 2015-08-06 04:52:10 -0500 |
commit | 8a48c9e6cbb4396fda34d00e9c48ba8ca409a05e (patch) | |
tree | d597db2abeffcb58e6264d312538f3e24d2d9363 /res | |
parent | 7351d33a1f2c8e2c5afb80327e5fbe1f47589618 (diff) | |
parent | c63316eec10e1990a88bf4712238d6deb375bfa9 (diff) |
Merge "res_http_websocket: Debug write lengths."
Diffstat (limited to 'res')
-rw-r--r-- | res/ari/ari_websockets.c | 2 | ||||
-rw-r--r-- | res/res_http_websocket.c | 23 |
2 files changed, 24 insertions, 1 deletions
diff --git a/res/ari/ari_websockets.c b/res/ari/ari_websockets.c index ced1e0d69..528e7f8b2 100644 --- a/res/ari/ari_websockets.c +++ b/res/ari/ari_websockets.c @@ -174,7 +174,7 @@ int ast_ari_websocket_session_write(struct ast_ari_websocket_session *session, return -1; } - ast_debug(3, "Examining ARI event: \n%s\n", str); + ast_debug(3, "Examining ARI event (length %zu): \n%s\n", strlen(str), str); if (ast_websocket_write_string(session->ws_session, str)) { ast_log(LOG_NOTICE, "Problem occurred during websocket write, websocket closed\n"); return -1; diff --git a/res/res_http_websocket.c b/res/res_http_websocket.c index 33905452f..9e5c60d83 100644 --- a/res/res_http_websocket.c +++ b/res/res_http_websocket.c @@ -300,6 +300,24 @@ int AST_OPTIONAL_API_NAME(ast_websocket_close)(struct ast_websocket *session, ui return res; } +static const char *opcode_map[] = { + [AST_WEBSOCKET_OPCODE_CONTINUATION] = "continuation", + [AST_WEBSOCKET_OPCODE_TEXT] = "text", + [AST_WEBSOCKET_OPCODE_BINARY] = "binary", + [AST_WEBSOCKET_OPCODE_CLOSE] = "close", + [AST_WEBSOCKET_OPCODE_PING] = "ping", + [AST_WEBSOCKET_OPCODE_PONG] = "pong", +}; + +static const char *websocket_opcode2str(enum ast_websocket_opcode opcode) +{ + if (opcode < AST_WEBSOCKET_OPCODE_CONTINUATION || + opcode > AST_WEBSOCKET_OPCODE_PONG) { + return "<unknown>"; + } else { + return opcode_map[opcode]; + } +} /*! \brief Write function for websocket traffic */ int AST_OPTIONAL_API_NAME(ast_websocket_write)(struct ast_websocket *session, enum ast_websocket_opcode opcode, char *payload, uint64_t actual_length) @@ -308,6 +326,9 @@ int AST_OPTIONAL_API_NAME(ast_websocket_write)(struct ast_websocket *session, en char *frame; uint64_t length; + ast_debug(3, "Writing websocket %s frame, length %" PRIu64 "\n", + websocket_opcode2str(opcode), actual_length); + if (actual_length < 126) { length = actual_length; } else if (actual_length < (1 << 16)) { @@ -1372,6 +1393,8 @@ int AST_OPTIONAL_API_NAME(ast_websocket_write_string) { uint64_t len = strlen(buf); + ast_debug(3, "Writing websocket string of length %" PRIu64 "\n", len); + /* We do not pass strlen(buf) to ast_websocket_write() directly because the * size_t returned by strlen() may not require the same storage size * as the uint64_t that ast_websocket_write() uses. This normally |