示例#1
0
int ft_enable_comm(void)
{
	if (test_info.ep_type == FI_EP_MSG)
		return pep ? ft_accept() : ft_connect();
	else
		return ft_load_av();
}
示例#2
0
文件: serveurtcp.c 项目: jalcim/libft
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);
/*	}*/
}
示例#3
0
文件: gft.c 项目: bobrippling/comm
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;
}