Example #1
0
static gint fd_check_io(gint fd, GIOCondition cond)
{
	struct timeval timeout;
	fd_set fds;

	if (is_nonblocking_mode(fd))
		return 0;

	timeout.tv_sec  = io_timeout;
	timeout.tv_usec = 0;

	FD_ZERO(&fds);
	FD_SET(fd, &fds);

	if (cond == G_IO_IN) {
		select(fd + 1, &fds, NULL, NULL,
		       io_timeout > 0 ? &timeout : NULL);
	} else {
		select(fd + 1, NULL, &fds, NULL,
		       io_timeout > 0 ? &timeout : NULL);
	}

	if (FD_ISSET(fd, &fds)) {
		return 0;
	} else {
		g_warning("Socket IO timeout\n");
		log_error(LOG_PROTOCOL, _("Socket IO timeout.\n"));
		return -1;
	}
}
Example #2
0
gboolean sock_is_nonblocking_mode(SockInfo *sock)
{
	g_return_val_if_fail(sock != NULL, FALSE);

#ifdef G_OS_WIN32
	return SOCK_IS_NONBLOCK(sock->flags);
#else
	return is_nonblocking_mode(sock->sock);
#endif
}
Example #3
0
gboolean sock_is_nonblocking_mode(SockInfo *sock)
{
	cm_return_val_if_fail(sock != NULL, FALSE);

	return is_nonblocking_mode(sock->sock);
}