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; |