• Main Page
  • Modules
  • Data Structures
  • Files
  • File List
  • Globals

missing/close.c

Go to the documentation of this file.
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 

Generated on Wed Sep 8 2010 09:55:57 for Ruby by  doxygen 1.7.1