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

yatex.org