commit 9991b526e7a838f60535ab580e08b9c0fa411e4a from: Omar Polo date: Sun Aug 01 22:33:48 2021 UTC add ability to hexdump messages also to the repl commit - c26e4201b489d6b496df07b5bc1629ba85dbd068 commit + 9991b526e7a838f60535ab580e08b9c0fa411e4a blob - e4999cbd80e9a5a6c49c638477047221178934ab blob + 774376f5c43864f8e527873dcc8c5cdb8434b3c3 --- kamirepl.c +++ kamirepl.c @@ -38,6 +38,8 @@ #include "log.h" #include "utils.h" +#define DEBUG_PACKETS 0 + #define PROMPT "=% " /* flags */ @@ -237,18 +239,24 @@ tls_writecb(int fd, short event, void *d) { struct bufferevent *bufev = d; ssize_t ret; + size_t len; short what = EVBUFFER_WRITE; + void *data; if (event == EV_TIMEOUT) { what |= EVBUFFER_TIMEOUT; goto err; } - if (EVBUFFER_LENGTH(bufev->output) != 0) { - ret = tls_write(ctx, - EVBUFFER_DATA(bufev->output), - EVBUFFER_LENGTH(bufev->output)); - switch (ret) { + len = EVBUFFER_LENGTH(bufev->output); + if (len != 0) { + data = EVBUFFER_DATA(bufev->output); + +#if DEBUG_PACKETS + hexdump("outgoing msg", data, len); +#endif + + switch (ret = tls_write(ctx, data, len)) { case TLS_WANT_POLLIN: case TLS_WANT_POLLOUT: goto retry; @@ -275,16 +283,19 @@ err: } static void -client_read(struct bufferevent *bev, void *data) +client_read(struct bufferevent *bev, void *d) { struct evbuffer *src = EVBUFFER_INPUT(bev); uint32_t len; + uint8_t *data; for (;;) { if (EVBUFFER_LENGTH(src) < sizeof(len)) return; - memcpy(&len, EVBUFFER_DATA(src), sizeof(len)); + data = EVBUFFER_DATA(src); + + memcpy(&len, data, sizeof(len)); len = le32toh(len); if (len < HEADERSIZE) @@ -294,7 +305,11 @@ client_read(struct bufferevent *bev, void *data) if (len > EVBUFFER_LENGTH(src)) return; - handle_9p(EVBUFFER_DATA(src), len); +#if DEBUG_PACKETS + hexdump("incoming msg", data, len); +#endif + + handle_9p(data, len); evbuffer_drain(src, len); } }