summaryrefslogtreecommitdiff
path: root/src/net.c
diff options
context:
space:
mode:
authorLizzy Fleckenstein <lizzy@vlhl.dev>2024-06-19 20:50:41 +0200
committerLizzy Fleckenstein <lizzy@vlhl.dev>2024-06-19 20:50:41 +0200
commit47984162974a8f7d9903d352567005ac569c5a87 (patch)
treeab265785ceaae0585aec80f6d5209e6289cbefd3 /src/net.c
parent9720c7efddf2d7595c9a0b021bc5fc6327c22bcf (diff)
downloadsilly_game-47984162974a8f7d9903d352567005ac569c5a87.tar.xz
client: receive and display player list
Signed-off-by: Lizzy Fleckenstein <lizzy@vlhl.dev>
Diffstat (limited to 'src/net.c')
-rw-r--r--src/net.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/net.c b/src/net.c
index b5edc07..4d41d6f 100644
--- a/src/net.c
+++ b/src/net.c
@@ -9,6 +9,7 @@
#include <poll.h>
#include <errno.h>
#include <netdb.h>
+#include <assert.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
@@ -20,7 +21,7 @@ void invalid_pkt(peer *from, str pkt)
{
// TODO: maybe inform peer about failure? not sure
// FIXME: hexdumping a gazillon bytes to stderr might be an issue
- fprintf(stderr, "invalid pkt from %*s: ", PSTR(*from->name));
+ fprintf(stderr, "invalid pkt from %.*s: ", PSTR(*from->name));
for (size_t i = 0; i < pkt.len; i++)
fprintf(stderr, "%02x%c", (uint8_t) pkt.data[i], i+1 == pkt.len ? '\n' : ' ');
}
@@ -103,13 +104,16 @@ void peer_free(peer *p)
static void next_in(peer *p, bool header, size_t len)
{
+ p->in.promised = len;
p->in.header = header;
p->in.len = 0;
- p->in.buffer = malloc(p->in.promised = len);
}
+
static bool peer_in_ready(peer *p)
{
+ assert(p->in.promised > p->in.len);
+
errno = 0;
ssize_t got = read(p->socket, p->in.buffer + p->in.len, p->in.promised - p->in.len);
if (got <= 0) {