#include "netdissect-stdinc.h"
#include "netdissect.h"
#include <limits.h>
-#include <stdlib.h>
-#include <errno.h>
#include "extract.h"
void
resp_print(netdissect_options *ndo, const u_char *bp, u_int length)
{
- int ret_len = 0, length_cur = length;
+ int ret_len = 0;
ndo->ndo_protocol = "resp";
- if(!bp || length <= 0)
- return;
ND_PRINT(": RESP");
- while (length_cur > 0) {
+ while (length > 0) {
/*
* This block supports redis pipelining.
* For example, multiple operations can be pipelined within the same string:
* In order to handle this case, we must try and parse 'bp' until
* 'length' bytes have been processed or we reach a trunc condition.
*/
- ret_len = resp_parse(ndo, bp, length_cur);
+ ret_len = resp_parse(ndo, bp, length);
TEST_RET_LEN_NORETURN(ret_len);
bp += ret_len;
- length_cur -= ret_len;
+ length -= ret_len;
}
return;
* preceding the \r\n. That includes the opcode, so don't print
* that.
*/
- len = ND_BYTES_BETWEEN(bp_ptr, bp);
+ len = ND_BYTES_BETWEEN(bp, bp_ptr);
RESP_PRINT_SEGMENT(ndo, bp, len);
ret_len = 1 /*<opcode>*/ + len /*<string>*/ + 2 /*<CRLF>*/;
* Found it; bp_ptr points to the \r or \n, so bp_ptr - bp is the
* Length of the line text that precedes it. Print it.
*/
- len = ND_BYTES_BETWEEN(bp_ptr, bp);
+ len = ND_BYTES_BETWEEN(bp, bp_ptr);
RESP_PRINT_SEGMENT(ndo, bp, len);
/*