Blob Blame History Raw
*** babeltrace-1.5.8.orig/configure.ac	2021-04-22 09:56:01.645909350 -0700
--- babeltrace-1.5.8/configure.ac	2021-04-22 10:41:30.537328243 -0700
*************** AC_CHECK_FUNCS([ \
*** 102,108 ****
  	dirfd \
  	dup2 \
  	ftruncate \
! 	gethostbyname \
  	gethostname \
  	gettimeofday \
  	localtime_r \
--- 102,108 ----
  	dirfd \
  	dup2 \
  	ftruncate \
! 	getaddrinfo \
  	gethostname \
  	gettimeofday \
  	localtime_r \
*** babeltrace-1.5.8.orig/formats/lttng-live/lttng-live-comm.c	2021-04-22 09:56:01.662909278 -0700
--- babeltrace-1.5.8/formats/lttng-live/lttng-live-comm.c	2021-04-22 11:01:13.166302197 -0700
*************** ssize_t lttng_live_send(int fd, const vo
*** 111,149 ****
  
  int lttng_live_connect_viewer(struct lttng_live_ctx *ctx)
  {
- 	struct hostent *host;
- 	struct sockaddr_in server_addr;
  	int ret;
  
  	if (lttng_live_should_quit()) {
  		ret = -1;
  		goto end;
  	}
  
! 	host = gethostbyname(ctx->relay_hostname);
! 	if (!host) {
! 		fprintf(stderr, "[error] Cannot lookup hostname %s\n",
! 			ctx->relay_hostname);
  		goto error;
  	}
  
! 	if ((ctx->control_sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
  		perror("Socket");
  		goto error;
  	}
  
! 	server_addr.sin_family = AF_INET;
! 	server_addr.sin_port = htons(ctx->port);
! 	server_addr.sin_addr = *((struct in_addr *) host->h_addr);
! 	memset(&(server_addr.sin_zero), 0, 8);
! 
! 	if (connect(ctx->control_sock, (struct sockaddr *) &server_addr,
! 				sizeof(struct sockaddr)) == -1) {
  		perror("Connect");
  		goto error;
  	}
  
  	ret = 0;
  
  end:
  	return ret;
--- 111,153 ----
  
  int lttng_live_connect_viewer(struct lttng_live_ctx *ctx)
  {
  	int ret;
+ 	struct addrinfo hints, *res;
+ 	char port[16];
  
  	if (lttng_live_should_quit()) {
  		ret = -1;
  		goto end;
  	}
  
! 	memset(&hints, 0, sizeof(hints));
! 	hints.ai_family = AF_INET;
! 	hints.ai_socktype = SOCK_STREAM;
! 	sprintf(port, "%d", ctx->port);
! 
! 	ret = getaddrinfo(ctx->relay_hostname, port, &hints, &res);
! 	if (ret != 0) {
! 		fprintf(stderr, "[error] getaddrinfo: %s\n",
! 			gai_strerror(ret));
  		goto error;
  	}
  
! 	ctx->control_sock = socket(res->ai_family, res->ai_socktype,
! 				   res->ai_protocol);
! 	if (ctx->control_sock == -1) {
  		perror("Socket");
+ 		freeaddrinfo(res);
  		goto error;
  	}
  
! 	if (connect(ctx->control_sock, res->ai_addr, res->ai_addrlen) == -1) {
  		perror("Connect");
+ 		freeaddrinfo(res);
  		goto error;
  	}
  
  	ret = 0;
+ 	freeaddrinfo(res);
  
  end:
  	return ret;