broadcasts any message received to all connected clients
int read_from(int client_index, struct sockname *users) {
    int fd = users[client_index].sock_fd;
    char buf[BUF_SIZE + 1];
    int first_read = 1;
    /* In Lab 10, you focused on handling partial reads. For this lab, you do
     * not need handle partial reads. Because of that, this server program
     * does not check for "\r\n" when it reads from the client.
     */
    int num_read = read(fd, &buf, BUF_SIZE);
    buf[num_read] = '\0';
    if (num_read == 0 || write(fd, buf, strlen(buf)) != strlen(buf)) {
        users[client_index].sock_fd = -1;
        return fd;
    }
    if (first_read == 1){ // it is a username
        users[client_index].username = malloc(sizeof(char) * num_read);
        strcpy(users[client_index].username, buf);
        first_read = 0;
        // add to the table of users?
    } else { // it is not a username
        for(int i = 0; i < client_index + 1; i++){
            if(users[i].sock_fd > 0){
                printf("%s\n", buf);
            }
        }
    }

    return 0;
}
