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

(-)a/libmilter/docs/smfi_setconn.html (+1 lines)
Lines 43-48 Set the socket through which this filter should communicate with sendmail. Link Here
43
	<LI><CODE>{unix|local}:/path/to/file</CODE> -- A named pipe.
43
	<LI><CODE>{unix|local}:/path/to/file</CODE> -- A named pipe.
44
	<LI><CODE>inet:port@{hostname|ip-address}</CODE> -- An IPV4 socket.
44
	<LI><CODE>inet:port@{hostname|ip-address}</CODE> -- An IPV4 socket.
45
	<LI><CODE>inet6:port@{hostname|ip-address}</CODE> -- An IPV6 socket.
45
	<LI><CODE>inet6:port@{hostname|ip-address}</CODE> -- An IPV6 socket.
46
	<LI><CODE>fd:number</CODE> -- Pre-opened file descriptor.
46
	</UL>
47
	</UL>
47
	</TD></TR>
48
	</TD></TR>
48
    </TABLE>
49
    </TABLE>
(-)a/libmilter/listener.c (-3 / +24 lines)
Lines 197-202 mi_milteropen(conn, backlog, rmsocket, name) Link Here
197
			L_socksize = sizeof addr.sin6;
197
			L_socksize = sizeof addr.sin6;
198
		}
198
		}
199
#endif /* NETINET6 */
199
#endif /* NETINET6 */
200
		else if (strcasecmp(p, "fd") == 0)
201
		{
202
			addr.sa.sa_family = AF_UNSPEC;
203
			L_socksize = sizeof (_SOCK_ADDR);
204
		}
200
		else
205
		else
201
		{
206
		{
202
			smi_log(SMI_LOG_ERR, "%s: unknown socket type %s",
207
			smi_log(SMI_LOG_ERR, "%s: unknown socket type %s",
Lines 443-449 mi_milteropen(conn, backlog, rmsocket, name) Link Here
443
	}
448
	}
444
#endif /* NETINET || NETINET6 */
449
#endif /* NETINET || NETINET6 */
445
450
446
	sock = socket(addr.sa.sa_family, SOCK_STREAM, 0);
451
	if (addr.sa.sa_family == AF_UNSPEC)
452
	{
453
		char *end;
454
		sock = strtol(colon, &end, 10);
455
		if (*end != '\0' || sock < 0)
456
		{
457
			smi_log(SMI_LOG_ERR, "%s: expected positive integer as fd, got %s", name, colon);
458
			return INVALID_SOCKET;
459
		}
460
	}
461
	else
462
	{
463
		sock = socket(addr.sa.sa_family, SOCK_STREAM, 0);
464
	}
465
447
	if (!ValidSocket(sock))
466
	if (!ValidSocket(sock))
448
	{
467
	{
449
		smi_log(SMI_LOG_ERR,
468
		smi_log(SMI_LOG_ERR,
Lines 466-471 mi_milteropen(conn, backlog, rmsocket, name) Link Here
466
#if NETUNIX
485
#if NETUNIX
467
	    addr.sa.sa_family != AF_UNIX &&
486
	    addr.sa.sa_family != AF_UNIX &&
468
#endif /* NETUNIX */
487
#endif /* NETUNIX */
488
	    addr.sa.sa_family != AF_UNSPEC &&
469
	    setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (void *) &sockopt,
489
	    setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (void *) &sockopt,
470
		       sizeof(sockopt)) == -1)
490
		       sizeof(sockopt)) == -1)
471
	{
491
	{
Lines 511-517 mi_milteropen(conn, backlog, rmsocket, name) Link Here
511
	}
531
	}
512
#endif /* NETUNIX */
532
#endif /* NETUNIX */
513
533
514
	if (bind(sock, &addr.sa, L_socksize) < 0)
534
	if (addr.sa.sa_family != AF_UNSPEC &&
535
	    bind(sock, &addr.sa, L_socksize) < 0)
515
	{
536
	{
516
		smi_log(SMI_LOG_ERR,
537
		smi_log(SMI_LOG_ERR,
517
			"%s: Unable to bind to port %s: %s",
538
			"%s: Unable to bind to port %s: %s",
Lines 817-823 mi_listener(conn, dbg, smfi, timeout, backlog) Link Here
817
# ifdef BSD4_4_SOCKADDR
838
# ifdef BSD4_4_SOCKADDR
818
		     cliaddr.sa.sa_len == 0 ||
839
		     cliaddr.sa.sa_len == 0 ||
819
# endif /* BSD4_4_SOCKADDR */
840
# endif /* BSD4_4_SOCKADDR */
820
		     cliaddr.sa.sa_family != L_family))
841
		     (L_family != AF_UNSPEC && cliaddr.sa.sa_family != L_family)))
821
		{
842
		{
822
			(void) closesocket(connfd);
843
			(void) closesocket(connfd);
823
			connfd = INVALID_SOCKET;
844
			connfd = INVALID_SOCKET;

Return to bug 511428