MCPcopy Create free account
hub / github.com/MariaDB/server / socket_set_options

Function socket_set_options

plugin/handler_socket/libhsclient/socket.cpp:78–110  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

76}
77
78int
79socket_set_options(auto_file& fd, const socket_args& args, std::string& err_r)
80{
81 if (args.timeout != 0 && !args.nonblocking) {
82 struct timeval tv;
83 tv.tv_sec = args.timeout;
84 tv.tv_usec = 0;
85 if (setsockopt(fd.get(), SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv)) != 0) {
86 return errno_string("setsockopt SO_RCVTIMEO", errno, err_r);
87 }
88 tv.tv_sec = args.timeout;
89 tv.tv_usec = 0;
90 if (setsockopt(fd.get(), SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv)) != 0) {
91 return errno_string("setsockopt SO_RCVTIMEO", errno, err_r);
92 }
93 }
94 if (args.nonblocking && fcntl(fd.get(), F_SETFL, O_NONBLOCK) != 0) {
95 return errno_string("fcntl O_NONBLOCK", errno, err_r);
96 }
97 if (args.sndbuf != 0) {
98 const int v = args.sndbuf;
99 if (setsockopt(fd.get(), SOL_SOCKET, SO_SNDBUF, &v, sizeof(v)) != 0) {
100 return errno_string("setsockopt SO_SNDBUF", errno, err_r);
101 }
102 }
103 if (args.rcvbuf != 0) {
104 const int v = args.rcvbuf;
105 if (setsockopt(fd.get(), SOL_SOCKET, SO_RCVBUF, &v, sizeof(v)) != 0) {
106 return errno_string("setsockopt SO_RCVBUF", errno, err_r);
107 }
108 }
109 return 0;
110}
111
112int
113socket_open(auto_file& fd, const socket_args& args, std::string& err_r)

Callers 2

socket_openFunction · 0.85
socket_acceptFunction · 0.85

Calls 2

errno_stringFunction · 0.85
getMethod · 0.45

Tested by

no test coverage detected