Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 226379
Collapse All | Expand All

(-)lighttpd-1.4.18.orig/src/mod_proxy.c (-6 / +22 lines)
Lines 356-361 Link Here
356
static int proxy_establish_connection(server *srv, handler_ctx *hctx) {
356
static int proxy_establish_connection(server *srv, handler_ctx *hctx) {
357
	struct sockaddr *proxy_addr;
357
	struct sockaddr *proxy_addr;
358
	struct sockaddr_in proxy_addr_in;
358
	struct sockaddr_in proxy_addr_in;
359
	struct sockaddr_in6 proxy_addr_in6;
359
	socklen_t servlen;
360
	socklen_t servlen;
360
361
361
	plugin_data *p    = hctx->plugin_data;
362
	plugin_data *p    = hctx->plugin_data;
Lines 364-375 Link Here
364
365
365
	memset(&proxy_addr, 0, sizeof(proxy_addr));
366
	memset(&proxy_addr, 0, sizeof(proxy_addr));
366
367
367
	proxy_addr_in.sin_family = AF_INET;
368
	if (strstr(host->host->ptr,":")) {
368
	proxy_addr_in.sin_addr.s_addr = inet_addr(host->host->ptr);
369
	    proxy_addr_in6.sin6_family = AF_INET6;
369
	proxy_addr_in.sin_port = htons(host->port);
370
	    inet_pton(AF_INET6,host->host->ptr,(char *)&proxy_addr_in6.sin6_addr);
370
	servlen = sizeof(proxy_addr_in);
371
	    proxy_addr_in6.sin6_port = htons(host->port);
372
	    servlen = sizeof(proxy_addr_in6);
373
	    proxy_addr = (struct sockaddr *) &proxy_addr_in6;
374
	} else {
375
	    proxy_addr_in.sin_family = AF_INET;
376
	    proxy_addr_in.sin_addr.s_addr = inet_addr(host->host->ptr);
377
	    proxy_addr_in.sin_port = htons(host->port);
378
	    servlen = sizeof(proxy_addr_in);
379
	    proxy_addr = (struct sockaddr *) &proxy_addr_in;
380
	}
371
381
372
	proxy_addr = (struct sockaddr *) &proxy_addr_in;
373
382
374
	if (-1 == connect(proxy_fd, proxy_addr, servlen)) {
383
	if (-1 == connect(proxy_fd, proxy_addr, servlen)) {
375
		if (errno == EINPROGRESS || errno == EALREADY) {
384
		if (errno == EINPROGRESS || errno == EALREADY) {
Lines 740-748 Link Here
740
749
741
	switch(hctx->state) {
750
	switch(hctx->state) {
742
	case PROXY_STATE_INIT:
751
	case PROXY_STATE_INIT:
743
		if (-1 == (hctx->fd = socket(AF_INET, SOCK_STREAM, 0))) {
752
		if (strstr(host->host->ptr,":")) {
753
		    if (-1 == (hctx->fd = socket(AF_INET6, SOCK_STREAM, 0))) {
754
			log_error_write(srv, __FILE__, __LINE__, "ss", "socket failed: ", strerror(errno));
755
			return HANDLER_ERROR;
756
		    }
757
		} else {
758
		    if (-1 == (hctx->fd = socket(AF_INET, SOCK_STREAM, 0))) {
744
			log_error_write(srv, __FILE__, __LINE__, "ss", "socket failed: ", strerror(errno));
759
			log_error_write(srv, __FILE__, __LINE__, "ss", "socket failed: ", strerror(errno));
745
			return HANDLER_ERROR;
760
			return HANDLER_ERROR;
761
		    }
746
		}
762
		}
747
		hctx->fde_ndx = -1;
763
		hctx->fde_ndx = -1;
748
764

Return to bug 226379