Example #1
0
int
thr_demarshal_config_xdr(int fd)
{
	if (thr_demarshal_set_buffer(fd, SO_RCVBUF, XDR_READ_BUFFER_SIZE) < 0) {
		return -1;
	}

	if (thr_demarshal_set_buffer(fd, SO_SNDBUF, XDR_WRITE_BUFFER_SIZE) < 0) {
		return -1;
	}

	int arg = XDR_READ_BUFFER_SIZE;

	if (setsockopt(fd, SOL_TCP, TCP_WINDOW_CLAMP, &arg, sizeof arg) < 0) {
		cf_crash(AS_DEMARSHAL, "Failed to set TCP window on FD %d, error %d (%s)",
				fd, errno, strerror(errno));
		return -1;
	}

	arg = 0;

	if (setsockopt(fd, SOL_TCP, TCP_NODELAY, &arg, sizeof arg) < 0) {
		cf_crash(AS_DEMARSHAL, "Failed to re-enable Nagle algorithm on FD %d, error %d (%s)",
				fd, errno, strerror(errno));
		return -1;
	}

	return 0;
}
int
thr_demarshal_config_xdr(cf_socket *sock)
{
	if (thr_demarshal_set_buffer(sock, BUFFER_TYPE_RECEIVE, XDR_READ_BUFFER_SIZE) < 0) {
		return -1;
	}

	if (thr_demarshal_set_buffer(sock, BUFFER_TYPE_SEND, XDR_WRITE_BUFFER_SIZE) < 0) {
		return -1;
	}

	cf_socket_set_window(sock, XDR_READ_BUFFER_SIZE);
	cf_socket_enable_nagle(sock);
	return 0;
}