commit - c26e4201b489d6b496df07b5bc1629ba85dbd068
commit + 9991b526e7a838f60535ab580e08b9c0fa411e4a
blob - e4999cbd80e9a5a6c49c638477047221178934ab
blob + 774376f5c43864f8e527873dcc8c5cdb8434b3c3
--- kamirepl.c
+++ kamirepl.c
#include "log.h"
#include "utils.h"
+#define DEBUG_PACKETS 0
+
#define PROMPT "=% "
/* flags */
{
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;
}
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)
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);
}
}