#include "rcs_defs.hh"
Include dependency graph for stcpopts.hh:
This graph shows which files directly or indirectly include this file:
Go to the source code of this file.
Functions | |
int RCS_EXPORT | set_stcp_socket_options (int socket_fd) |
Variables | |
int | stcp_nonblocking |
|
Definition at line 45 of file stcpopts.cc. Referenced by STCPMEM::STCPMEM().
00046 { 00047 if (socket_fd <= 0) 00048 { 00049 return -1; 00050 } 00051 int optval = 1; 00052 #if defined(_Windows) || !defined(MSDOS) 00053 if (dl_setsockopt (socket_fd, IPPROTO_TCP, TCP_NODELAY, 00054 (char *) &optval, sizeof (optval)) < 0) 00055 { 00056 rcs_print_error (" Can`t set a socket option.\n"); 00057 rcs_print_error ("errno = %d = %s\n", errno, strerror (errno)); 00058 return -1; 00059 } 00060 #endif 00061 optval = 1; 00062 00063 #if !defined(MSDOS) || defined(_Windows) 00064 if (dl_setsockopt (socket_fd, SOL_SOCKET, SO_REUSEADDR, 00065 (char *) &optval, sizeof (optval)) < 0) 00066 { 00067 rcs_print_error (" Can`t set a socket option.\n"); 00068 rcs_print_error ("errno = %d = %s\n", errno, strerror (errno)); 00069 return -1; 00070 } 00071 struct linger linger_opt; 00072 linger_opt.l_onoff = 0; 00073 linger_opt.l_linger = 0; 00074 if (dl_setsockopt (socket_fd, SOL_SOCKET, SO_LINGER, 00075 (char *) &linger_opt, sizeof (linger_opt)) < 0) 00076 { 00077 rcs_print_error (" Can`t set a socket option.\n"); 00078 rcs_print_error ("errno = %d = %s\n", errno, strerror (errno)); 00079 return -1; 00080 } 00081 #endif 00082 00083 if (stcp_nonblocking) 00084 { 00085 #ifdef _Windows 00086 unsigned long arg = 1; 00087 if (dl_ioctlsocket (socket_fd, FIONBIO, &arg) < 0) 00088 { 00089 rcs_print_error ("Can't set socket to non-blocking."); 00090 } 00091 #else 00092 #ifndef VXWORKS 00093 #if defined(O_NDELAY) && !defined(O_NONBLOCK) 00094 if (-1 == fcntl (socket_fd, F_SETFL, O_NDELAY)) 00095 { 00096 rcs_print_error ("Couldn's set flag for no delay on socket.\n"); 00097 } 00098 #endif 00099 #ifdef O_NONBLOCK 00100 if (-1 == fcntl (socket_fd, F_SETFL, O_NONBLOCK)) 00101 { 00102 rcs_print_error ("Couldn's set flag for non-blocking on socket.\n"); 00103 } 00104 #endif 00105 #endif 00106 #endif 00107 } 00108 return (0); 00109 } |
|
Definition at line 11 of file stcpopts.hh. |