Why doesnt readfrom read from the client in one go
int read_from(Client *curr_client, User *user_list) {
    int fd = curr_client->client_fd;
    printf("5\n");

    char buf[BUF_SIZE] = {'\0'};
    int inbuf = 0;
    int room = sizeof(buf);
    char *after = buf;
    int num_read = 0;
    while ((num_read = read(fd, after, room)) > 0) {
        inbuf = BUF_SIZE;
        int where = 0;
        while ((where = find_network_newline(buf, inbuf)) > 0) {
            printf("9#%d##%s##%lu#\n", where, buf, strlen(buf));
            buf[where - 2] = '\0';
            printf("Next message: %s\n", buf);
            inbuf = BUF_SIZE - where;
            for (int j = 0; j < inbuf; j++) {
                buf[j] = buf[where + j];
            }
            for (int i = inbuf; i < BUF_SIZE; i++) {
                buf[i] = '\0';
            }
        }
        printf("WHERE#%d#\n", where);
        after = &(buf[inbuf]);
        room = BUF_SIZE - inbuf;
    }

    printf("6\n");
    printf("#BUF#%s##%lu#\n", buf, strlen(buf));
    char *new_message = helper(buf, curr_client->client_username, user_list);
    printf("#%s#@%s@#%s#@%s@\n", buf, curr_client->client_username, curr_client->client_user->name, new_message);
    printf("#%lu#@%lu@#%lu#@%lu@\n", strlen(buf), strlen(curr_client->client_username), strlen(curr_client->client_user->name), strlen(new_message));
    if (write(fd, new_message, strlen(new_message)) != strlen(new_message)) {
        printf("7\n");
        curr_client->client_fd = -1;
        return fd;
    }
    printf("8\n");

    return 0;
}

int find_network_newline(const char *buf, int n) {
    int index = 0;
    while (index < n - 1) {
        if (buf[index] == '\r' && buf[index + 1] == '\n') {
            return index + 2;
        }
        index = index + 1;
    }
    return -1;
}