Commit d6f4fab8 authored by Linus Nordberg's avatar Linus Nordberg
Browse files

Verify return code from fcntl calls.

Have connectnonblocking() warn and fail if setting O_NONBLOCK fails.
Have it warn if restoring of flags fail.

coverity: 1449515
parent 011523ec
...@@ -171,7 +171,14 @@ int connectnonblocking(int s, const struct sockaddr *addr, socklen_t addrlen, st ...@@ -171,7 +171,14 @@ int connectnonblocking(int s, const struct sockaddr *addr, socklen_t addrlen, st
socklen_t len; socklen_t len;
origflags = fcntl(s, F_GETFL, 0); origflags = fcntl(s, F_GETFL, 0);
fcntl(s, F_SETFL, origflags | O_NONBLOCK); if (origflags == -1) {
debugerrno(errno, DBG_WARN, "Failed to get flags");
return -1;
}
if (fcntl(s, F_SETFL, origflags | O_NONBLOCK) == -1) {
debugerrno(errno, DBG_WARN, "Failed to set O_NONBLOCK");
return -1;
}
if (!connect(s, addr, addrlen)) { if (!connect(s, addr, addrlen)) {
r = 0; r = 0;
goto exit; goto exit;
...@@ -189,7 +196,8 @@ int connectnonblocking(int s, const struct sockaddr *addr, socklen_t addrlen, st ...@@ -189,7 +196,8 @@ int connectnonblocking(int s, const struct sockaddr *addr, socklen_t addrlen, st
r = 0; r = 0;
exit: exit:
fcntl(s, F_SETFL, origflags); if (fcntl(s, F_SETFL, origflags) == -1)
debugerrno(errno, DBG_WARN, "Failed to set original flags back");
return r; return r;
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment