int ft_enable_comm(void) { if (test_info.ep_type == FI_EP_MSG) return pep ? ft_accept() : ft_connect(); else return ft_load_av(); }
void acceuil(t_server *server, int pid) { char cmd; char *user;//[user] char *buffer; int nb_dir; printf("acceuil\n"); ft_accept(server); server->connection++; printf("connected\n"); user = ft_fd_in_str(server->sock);//[user] ft_putendl(user);//[user] /* if (!(server->pid = fork())) {*/ printf("fils\n"); // if (!(user = getenv("USER="******"cmd = :%c:\n", cmd); if (cmd == 'd' || cmd == 'f') { nb_dir = 0; if (cmd == 'd') nb_dir = nb_dir_sock(server->sock); ft_recv_file(server->sock, nb_dir); } else if (cmd == 'c' || cmd == 'x') { buffer = ft_fd_in_str(server->sock);//reception de la string sur la socket printf("serv buffer = :%s:\n", buffer); servcom(cmd, user, buffer, pid);//envoie du buffer au shell via pipe [user] } else printf("no mode %c bad argument\n", cmd); ft_putstr("server : mort du processus fils\n"); close(server->sock); exit(0); /* }*/ }
G_MODULE_EXPORT gboolean timeout(gpointer data) { (void)data; if(gstate == STATE_CONNECTED){ switch(ft_gotaction(&ft)){ case FT_YES: /* * state = STATE_TRANSFER; * cmds(); * no need for this - set in the callback straight away */ if(!ft_connected(&ft)){ /* connection closed */ status("Connection closed"); CLOSE(); return FALSE; /* timer death */ } if(ft_recv(&ft, callback, queryback, fnameback, inputback)){ status("Couldn't receive incoming data: %s", ft_lasterr(&ft)); CLOSE(); }else{ /* * status("Received %s", ft_truncname(&ft, 32)); * don't do ^ here, it's done in the callback */ STAY_OPEN(); } return FALSE; /* kill timer */ case FT_ERR: status("ft_poll() error: %s", ft_lasterr(&ft)); CLOSE(); return FALSE; case FT_NO: return TRUE; /* keep looking */ } /* unreachable */ }else{ enum ftret ftr = ft_accept(&ft); if(cancelled){ status("Cancelled"); cancelled = 0; return FALSE; }else switch(ftr){ case FT_ERR: status("Couldn't accept connection: %s", ft_lasterr(&ft)); return FALSE; /* kill timer */ case FT_YES: status("Got connection from %s", ft_remoteaddr(&ft)); gstate = STATE_CONNECTED; URGENT(1); cmds(); /* fall */ case FT_NO: return TRUE; /* make sure timeout keeps getting called */ } /* unreachable */ } /* unreachable (unless bogus enum value) */ return TRUE; }