Mercurial > hgrepos > hgweb.cgi > imapext
comparison src/osdep/unix/tcp_unix.c @ 4:d741b3ecc917 draft
imapext-2007f
author | HIROSE Yuuji <yuuji@gentei.org> |
---|---|
date | Thu, 30 Oct 2014 00:03:05 +0900 |
parents | 2366b362676d |
children |
comparison
equal
deleted
inserted
replaced
3:2366b362676d | 4:d741b3ecc917 |
---|---|
818 fs_give ((void **) &sadr); | 818 fs_give ((void **) &sadr); |
819 } | 819 } |
820 return stream->localhost; /* return local host name */ | 820 return stream->localhost; /* return local host name */ |
821 } | 821 } |
822 | 822 |
823 /* Get $TCPREMOTEHOST || $TCPREMOTEHOST | |
824 * If invoked via tcpserver or couriertcpd, consult $TCPREMOTEHOST | |
825 * or $TCPREMOTEIP | |
826 */ | |
827 char* gettcpremoteip() | |
828 { | |
829 if (getenv("TCPREMOTEHOST") && strcmp("0", getenv("TCPREMOTEHOST"))) { | |
830 return getenv("TCPREMOTEHOST"); | |
831 } else if (getenv("TCPREMOTEIP")) { | |
832 return getenv("TCPREMOTEIP"); | |
833 } | |
834 return "NON-IPv4"; | |
835 } | |
836 | |
823 /* TCP/IP get client host address (server calls only) | 837 /* TCP/IP get client host address (server calls only) |
824 * Returns: client host address | 838 * Returns: client host address |
825 */ | 839 */ |
826 | 840 |
827 char *tcp_clientaddr () | 841 char *tcp_clientaddr () |
848 char *tcp_clienthost () | 862 char *tcp_clienthost () |
849 { | 863 { |
850 if (!myClientHost) { | 864 if (!myClientHost) { |
851 size_t sadrlen; | 865 size_t sadrlen; |
852 struct sockaddr *sadr = ip_newsockaddr (&sadrlen); | 866 struct sockaddr *sadr = ip_newsockaddr (&sadrlen); |
867 #ifdef INET6 | |
868 if (getenv("TCPREMOTEIP")) { | |
869 myClientHost = | |
870 cpystr((getenv("TCPREMOTEHOST") | |
871 && strcasecmp("UNKNOWN", getenv("TCPREMOTEHOST"))) | |
872 ? getenv("TCPREMOTEHOST") | |
873 : getenv("TCPREMOTEIP")); | |
874 } else | |
875 #endif | |
853 if (getpeername (0,sadr,(void *) &sadrlen)) { | 876 if (getpeername (0,sadr,(void *) &sadrlen)) { |
854 char *s,*t,*v,tmp[MAILTMPLEN]; | 877 char *s,*t,*v,tmp[MAILTMPLEN]; |
855 if ((s = getenv (t = "SSH_CLIENT")) || | 878 if ((s = getenv (t = "SSH_CLIENT")) || |
856 (s = getenv (t = "KRB5REMOTEADDR")) || | 879 (s = getenv (t = "KRB5REMOTEADDR")) || |
857 (s = getenv (t = "SSH2_CLIENT"))) { | 880 (s = getenv (t = "SSH2_CLIENT"))) { |
911 { | 934 { |
912 if (!myServerHost) { /* once-only */ | 935 if (!myServerHost) { /* once-only */ |
913 size_t sadrlen; | 936 size_t sadrlen; |
914 struct sockaddr *sadr = ip_newsockaddr (&sadrlen); | 937 struct sockaddr *sadr = ip_newsockaddr (&sadrlen); |
915 /* get stdin's name */ | 938 /* get stdin's name */ |
916 if (getsockname (0,sadr,(void *) &sadrlen)) | 939 if (getsockname (0,sadr,(void *) &sadrlen) || |
940 (myServerPort = ip_sockaddrtoport (sadr)) < 0) | |
917 myServerHost = cpystr (mylocalhost ()); | 941 myServerHost = cpystr (mylocalhost ()); |
918 else { /* get stdin's name */ | 942 else { /* get stdin's name */ |
919 myServerHost = tcp_name (sadr,NIL); | 943 myServerHost = tcp_name (sadr,NIL); |
920 if (!myServerAddr) myServerAddr = cpystr (ip_sockaddrtostring (sadr)); | 944 if (!myServerAddr) myServerAddr = cpystr (ip_sockaddrtostring (sadr)); |
921 if (myServerPort < 0) myServerPort = ip_sockaddrtoport (sadr); | 945 if (myServerPort < 0) myServerPort = ip_sockaddrtoport (sadr); |