Mercurial > hgrepos > hgweb.cgi > imapext
comparison src/osdep/unix/tcp_unix.c @ 1:28a55bc1110c imapext-2007-1
[mq]: imapext
author | yuuji@gentei.org |
---|---|
date | Mon, 14 Sep 2009 19:23:11 +0900 |
parents | ada5e610ab86 |
children | 2366b362676d 20c025a380ab |
comparison
equal
deleted
inserted
replaced
0:ada5e610ab86 | 1:28a55bc1110c |
---|---|
816 fs_give ((void **) &sadr); | 816 fs_give ((void **) &sadr); |
817 } | 817 } |
818 return stream->localhost; /* return local host name */ | 818 return stream->localhost; /* return local host name */ |
819 } | 819 } |
820 | 820 |
821 /* Get $TCPREMOTEHOST || $TCPREMOTEHOST | |
822 * If invoked via tcpserver or couriertcpd, consult $TCPREMOTEHOST | |
823 * or $TCPREMOTEIP | |
824 */ | |
825 char* gettcpremoteip() | |
826 { | |
827 if (getenv("TCPREMOTEHOST") && strcmp("0", getenv("TCPREMOTEHOST"))) { | |
828 return getenv("TCPREMOTEHOST"); | |
829 } else if (getenv("TCPREMOTEIP")) { | |
830 return getenv("TCPREMOTEIP"); | |
831 } | |
832 return "NON-IPv4"; | |
833 } | |
834 | |
821 /* TCP/IP get client host address (server calls only) | 835 /* TCP/IP get client host address (server calls only) |
822 * Returns: client host address | 836 * Returns: client host address |
823 */ | 837 */ |
824 | 838 |
825 char *tcp_clientaddr () | 839 char *tcp_clientaddr () |
846 char *tcp_clienthost () | 860 char *tcp_clienthost () |
847 { | 861 { |
848 if (!myClientHost) { | 862 if (!myClientHost) { |
849 size_t sadrlen; | 863 size_t sadrlen; |
850 struct sockaddr *sadr = ip_newsockaddr (&sadrlen); | 864 struct sockaddr *sadr = ip_newsockaddr (&sadrlen); |
865 #ifdef INET6 | |
866 if (getenv("TCPREMOTEIP")) { | |
867 myClientHost = | |
868 cpystr((getenv("TCPREMOTEHOST") | |
869 && strcasecmp("UNKNOWN", getenv("TCPREMOTEHOST"))) | |
870 ? getenv("TCPREMOTEHOST") | |
871 : getenv("TCPREMOTEIP")); | |
872 } else | |
873 #endif | |
851 if (getpeername (0,sadr,(void *) &sadrlen)) { | 874 if (getpeername (0,sadr,(void *) &sadrlen)) { |
852 char *s,*t,*v,tmp[MAILTMPLEN]; | 875 char *s,*t,*v,tmp[MAILTMPLEN]; |
853 if ((s = getenv (t = "SSH_CLIENT")) || | 876 if ((s = getenv (t = "SSH_CLIENT")) || |
854 (s = getenv (t = "KRB5REMOTEADDR")) || | 877 (s = getenv (t = "KRB5REMOTEADDR")) || |
855 (s = getenv (t = "SSH2_CLIENT"))) { | 878 (s = getenv (t = "SSH2_CLIENT"))) { |
909 { | 932 { |
910 if (!myServerHost) { /* once-only */ | 933 if (!myServerHost) { /* once-only */ |
911 size_t sadrlen; | 934 size_t sadrlen; |
912 struct sockaddr *sadr = ip_newsockaddr (&sadrlen); | 935 struct sockaddr *sadr = ip_newsockaddr (&sadrlen); |
913 /* get stdin's name */ | 936 /* get stdin's name */ |
914 if (getsockname (0,sadr,(void *) &sadrlen)) | 937 if (getsockname (0,sadr,(void *) &sadrlen) || |
938 (myServerPort = ip_sockaddrtoport (sadr)) < 0) | |
915 myServerHost = cpystr (mylocalhost ()); | 939 myServerHost = cpystr (mylocalhost ()); |
916 else { /* get stdin's name */ | 940 else { /* get stdin's name */ |
917 myServerHost = tcp_name (sadr,NIL); | 941 myServerHost = tcp_name (sadr,NIL); |
918 if (!myServerAddr) myServerAddr = cpystr (ip_sockaddrtostring (sadr)); | 942 if (!myServerAddr) myServerAddr = cpystr (ip_sockaddrtostring (sadr)); |
919 if (myServerPort < 0) myServerPort = ip_sockaddrtoport (sadr); | 943 if (myServerPort < 0) myServerPort = ip_sockaddrtoport (sadr); |