I've realised that I was also talking nonsense about the buffer being allocated more than once. I looked at the code, properly this time:
static char *recvbuf = NULL;
struct sockaddr ina;
struct sockaddr_in *ina_in = NULL;
socklen_t slen = sizeof(struct sockaddr);
int bytes_read;
if(!recvbuf)
recvbuf = xcalloc(1, RECV_BUF_SIZE);
This time I noticed the static declaration and the check for NULL before allocating

So I was wrong about most of what I said, but I still stand by my claim that increasing the buffer size would have no effect
