|
Ruby 1.9.2p290(2011-07-09revision32553)
|
00001 /* Ignore ECONNRESET of FreeBSD */ 00002 #include <errno.h> 00003 #include <unistd.h> 00004 #include <sys/types.h> 00005 #include <sys/socket.h> 00006 00007 int 00008 ruby_getpeername(int s, struct sockaddr * name, 00009 socklen_t * namelen) 00010 { 00011 int err = errno; 00012 errno = 0; 00013 s = getpeername(s, name, namelen); 00014 if (errno == ECONNRESET) { 00015 errno = 0; 00016 s = 0; 00017 } 00018 else if (errno == 0) 00019 errno = err; 00020 return s; 00021 } 00022 00023 int 00024 ruby_getsockname(int s, struct sockaddr * name, 00025 socklen_t * namelen) 00026 { 00027 int err = errno; 00028 errno = 0; 00029 s = getsockname(s, name, namelen); 00030 if (errno == ECONNRESET) { 00031 errno = 0; 00032 s = 0; 00033 } 00034 else if (errno == 0) 00035 errno = err; 00036 return s; 00037 } 00038 00039 int 00040 ruby_shutdown(int s, int how) 00041 { 00042 int err = errno; 00043 errno = 0; 00044 s = shutdown(s, how); 00045 if (errno == ECONNRESET) { 00046 errno = 0; 00047 s = 0; 00048 } 00049 else if (errno == 0) 00050 errno = err; 00051 return s; 00052 } 00053 00054 int 00055 ruby_close(int s) 00056 { 00057 int err = errno; 00058 errno = 0; 00059 s = close(s); 00060 if (errno == ECONNRESET) { 00061 errno = 0; 00062 s = 0; 00063 } 00064 else if (errno == 0) 00065 errno = err; 00066 return s; 00067 } 00068
1.7.3