static void manage_errors(t_server *server, t_client *client) { reply(client, ERR_UNKNOWNCOMMAND, client->tab_cmd[0]); if (++(client->nb_wrong_cmd) >= LIMIT_WRONG) { pop_client(server->root_clients, client); } }
int quit_client(t_server *server, t_client *client) { size_t i; char **tab; i = 0; tab = client->tab_cmd; while (tab && tab[i]) { free(tab[i]); i += 1; } free(tab); client->tab_cmd = (char**)0; pop_client(server->root_clients, client); return (0); }
int cmd_client(t_client *client, t_kernel *kernel, t_buffer *buff_node) { char *buffer; buffer = read_on(client->fd, buff_node); if (buffer == NULL) return (-1); else if (buffer == (void *)2) { printf("[\033[31;1mOK\033[0m] Deconnection from %s\n", client->ip); pop_client(client->fd, kernel); return (1); } printf("[\033[32;1mClient %s\033[0m] msg : [%s]\n", client->ip, buffer); return (launch_cmd(buffer, client, kernel)); }
t_client *check_egg(t_server *server, t_client *client) { t_client *egg; char *s; if ((egg = get_client_egg_by_team(server->clients, client->team)) != NULL) { asprintf(&s, "eht #%d\n", egg->socket); broadcast(server->clients, s, FD_GRAPHIC); free(s); asprintf(&s, "ebo #%d\n", egg->socket); broadcast(server->clients, s, FD_GRAPHIC); free(s); client->player = egg->player; server->clients = pop_client(server->clients, egg->socket); } else create_player(server, client); return (server->clients); }
int read_client(t_server *server, t_client *client) { if (!read512_socket(client->fd, client->buffer_in) || !strncmp("QUIT", client->buffer_in, strlen("QUIT"))) { #ifdef DEBUG fprintf(stdout, "--CLIENT DISCONNECT-- (fd: %d)\n", client->fd); #endif pop_client(server->root_clients, client); } else { #ifdef DEBUG puts_telnet(client->buffer_in); #endif clean_telnet(client->buffer_in); if ((client->tab_cmd = my_str_to_wordtab(client->buffer_in))) { interpret_command(server, client); free_wordtab(&(client->tab_cmd)); } } return (0); }