imapext-2007

diff src/osdep/unix/tcp_unix.c @ 1:28a55bc1110c

[mq]: imapext
author yuuji@gentei.org
date Mon, 14 Sep 2009 19:23:11 +0900
parents ada5e610ab86
children 2366b362676d 20c025a380ab
line diff
     1.1 --- a/src/osdep/unix/tcp_unix.c	Mon Sep 14 15:17:45 2009 +0900
     1.2 +++ b/src/osdep/unix/tcp_unix.c	Mon Sep 14 19:23:11 2009 +0900
     1.3 @@ -818,6 +818,20 @@
     1.4    return stream->localhost;	/* return local host name */
     1.5  }
     1.6  
     1.7 +/* Get $TCPREMOTEHOST || $TCPREMOTEHOST
     1.8 + * If invoked via tcpserver or couriertcpd, consult $TCPREMOTEHOST
     1.9 + * or $TCPREMOTEIP
    1.10 + */
    1.11 +char* gettcpremoteip()
    1.12 +{
    1.13 +  if (getenv("TCPREMOTEHOST") && strcmp("0", getenv("TCPREMOTEHOST"))) {
    1.14 +    return getenv("TCPREMOTEHOST");
    1.15 +  } else if (getenv("TCPREMOTEIP")) {
    1.16 +    return getenv("TCPREMOTEIP");
    1.17 +  }
    1.18 +  return "NON-IPv4";
    1.19 +}
    1.20 +
    1.21  /* TCP/IP get client host address (server calls only)
    1.22   * Returns: client host address
    1.23   */
    1.24 @@ -848,6 +862,15 @@
    1.25    if (!myClientHost) {
    1.26      size_t sadrlen;
    1.27      struct sockaddr *sadr = ip_newsockaddr (&sadrlen);
    1.28 +#ifdef INET6
    1.29 +    if (getenv("TCPREMOTEIP")) {
    1.30 +      myClientHost =
    1.31 +         cpystr((getenv("TCPREMOTEHOST")
    1.32 + 		&& strcasecmp("UNKNOWN", getenv("TCPREMOTEHOST")))
    1.33 + 		? getenv("TCPREMOTEHOST")
    1.34 + 		: getenv("TCPREMOTEIP"));
    1.35 +    } else
    1.36 +#endif
    1.37      if (getpeername (0,sadr,(void *) &sadrlen)) {
    1.38        char *s,*t,*v,tmp[MAILTMPLEN];
    1.39        if ((s = getenv (t = "SSH_CLIENT")) ||
    1.40 @@ -911,7 +934,8 @@
    1.41      size_t sadrlen;
    1.42      struct sockaddr *sadr = ip_newsockaddr (&sadrlen);
    1.43  				/* get stdin's name */
    1.44 -    if (getsockname (0,sadr,(void *) &sadrlen))
    1.45 +    if (getsockname (0,sadr,(void *) &sadrlen) ||
    1.46 +        (myServerPort = ip_sockaddrtoport (sadr)) < 0)
    1.47        myServerHost = cpystr (mylocalhost ());
    1.48      else {			/* get stdin's name */
    1.49        myServerHost = tcp_name (sadr,NIL);

UW-IMAP'd extensions by yuuji