diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/server.c | 25 | ||||
| -rw-r--r-- | src/server/base64.c | 5 |
2 files changed, 28 insertions, 2 deletions
diff --git a/src/server.c b/src/server.c index 80ba5ce..7ff9c87 100644 --- a/src/server.c +++ b/src/server.c @@ -10,6 +10,7 @@ #define PORT 3456 +#include "server/base64.c" #include "server/ws_key.c" #include "server/comms.c" @@ -133,10 +134,30 @@ int handle_client(int client) { } unsigned char mask[4]; - recv(client, mask, 4, MSG_WAITALL); + recvn = recv(client, mask, 4, MSG_WAITALL); + if (recvn == -1) { + char buf[256]; + if (strerror_r(errno, buf, sizeof(buf)) == 0) { + log_warnf("mask recv err: %s", buf); + } + } else { + char mask_hex[256] = {0}; + base64_encode(mask, 126, mask_hex); + log_infof("mask recv{%d}: %s", recvn, mask_hex); + } unsigned char payload[126]; - recv(client, payload, len, MSG_WAITALL); + recvn = recv(client, payload, len, MSG_WAITALL); + if (recvn == -1) { + char buf[256]; + if (strerror_r(errno, buf, sizeof(buf)) == 0) { + log_warnf("payload recv err: %s", buf); + } + } else { + char payload_hex[256] = {0}; + base64_encode(payload, 126, payload_hex); + log_infof("payload recv{%d}: %s", recvn, payload_hex); + } for (unsigned i = 0; i < len; i++) payload[i] ^= mask[i % 4]; diff --git a/src/server/base64.c b/src/server/base64.c index 7e52eb9..e3e0ef6 100644 --- a/src/server/base64.c +++ b/src/server/base64.c @@ -1,3 +1,6 @@ +#ifndef BASE64_C +#define BASE64_C + #include <stddef.h> static const char b64[] = @@ -27,3 +30,5 @@ void base64_encode( out[j] = 0; } + +#endif // BASE64_C |
