version 1.9.2.1, 2000/11/08 08:18:14 |
version 1.9.2.3, 2000/11/10 14:57:24 |
|
|
* OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY |
* OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY |
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* $OpenXM: OpenXM_contrib2/asir2000/io/sio.c,v 1.9 2000/11/07 06:35:39 noro Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/io/sio.c,v 1.9.2.2 2000/11/08 08:31:55 maekawa Exp $ |
*/ |
*/ |
#if INET |
#if INET |
#include "ca.h" |
#include "ca.h" |
Line 86 void getremotename(s,name) |
|
Line 86 void getremotename(s,name) |
|
int s; |
int s; |
char *name; |
char *name; |
{ |
{ |
union { |
struct sockaddr_strorage ss; |
struct sockaddr sa; |
|
char data[SOCK_MAXADDRLEN]; |
|
} dummy; |
|
struct sockaddr *sa; |
struct sockaddr *sa; |
socklen_t len; |
socklen_t len; |
char host[NI_MAXHOST]; |
char host[NI_MAXHOST]; |
int rs; |
int rs; |
|
|
rs = getremotesocket(s); |
rs = getremotesocket(s); |
len = SOCK_MAXADDRLEN; |
len = sizeof(ss); |
getpeername(rs, (struct sockaddr *)dummy.data, &len); |
getpeername(rs, (struct sockaddr *)&ss, &len); |
sa = &(dummy.sa); |
sa = (struct sockaddr *)&ss; |
getnameinfo(sa, sa->sa_len, host, sizeof(host), NULL, 0, 0); |
getnameinfo(sa, sa->sa_len, host, sizeof(host), NULL, 0, 0); |
strcpy(name, host); |
strcpy(name, host); |
} |
} |
|
|
return (-1); |
return (-1); |
} |
} |
|
|
|
s = -1; |
for (ai = res ; ai != NULL ; ai = ai->ai_next) { |
for (ai = res ; ai != NULL ; ai = ai->ai_next) { |
if ((s = socket(ai->ai_family, ai->ai_socktype, |
if ((s = socket(ai->ai_family, ai->ai_socktype, |
ai->ai_protocol)) < 0 ) { |
ai->ai_protocol)) < 0 ) { |
|
|
try to accept a connection request |
try to accept a connection request |
|
|
Input |
Input |
af_unix: s is UNIX domain socket if af_unix is nonzero |
|
s: socket |
s: socket |
|
|
Output |
Output |
|
|
the original socket is always closed. |
the original socket is always closed. |
*/ |
*/ |
|
|
int try_accept(af_unix,s) |
int try_accept(s) |
int af_unix,s; |
int s; |
{ |
{ |
union { |
struct sockaddr_storage ss; |
struct sockaddr sa; |
|
char data[SOCK_MAXADDRLEN]; |
|
} dummy; |
|
socklen_t len; |
socklen_t len; |
int c, i; |
int c, i; |
|
|
len = SOCK_MAXADDRLEN; |
len = sizeof(ss); |
if (getsockname(s, (struct sockaddr *)dummy.data, &len) < 0) { |
if (getsockname(s, (struct sockaddr *)&ss, &len) < 0) { |
close(s); |
close(s); |
return (-1) |
return (-1) |
} |
} |
|
|
for (i = 0 ; i < 10 ; i++) { |
for (i = 0 ; i < 10 ; i++) { |
c = accept(s, &(dummy.sa), &len); |
c = accept(s, (struct sockaddr *)&ss, &len); |
if (c >= 0) { |
if (c >= 0) { |
close(s); |
close(s); |
return (c); |
return (c); |
Line 249 char *host,*port_str; |
|
Line 243 char *host,*port_str; |
|
return (-1); |
return (-1); |
} |
} |
for (i = 0 ; i < 10 ; i++) { |
for (i = 0 ; i < 10 ; i++) { |
|
s = -1; |
for (ai = res ; ai != NULL ; ai = ai->ai_next) { |
for (ai = res ; ai != NULL ; ai = ai->ai_next) { |
if ((s = socket(ai->ai_family, ai->ai_socktype, |
if ((s = socket(ai->ai_family, ai->ai_socktype, |
ai->ai_protocol)) < 0 ) { |
ai->ai_protocol)) < 0 ) { |