mirror of
https://github.com/openvswitch/ovs
synced 2025-08-30 22:05:19 +00:00
socket-util: Clarify EAGAIN error code for make_unix_socket().
make_unix_socket() can return EAGAIN in rare circumstances, e.g. when the server's socket listen queue is full. A lot of OVS callers interpret EAGAIN as a "try again" error code, but in this case it means that the attempt to create the socket failed. So munge EAGAIN into another error code to prevent that misinterpretation.
This commit is contained in:
@@ -249,6 +249,7 @@ make_unix_socket(int style, bool nonblock, bool passcred UNUSED,
|
||||
make_sockaddr_un(connect_path, &un, &un_len);
|
||||
if (connect(fd, (struct sockaddr*) &un, un_len)
|
||||
&& errno != EINPROGRESS) {
|
||||
printf("connect failed with %s\n", strerror(errno));
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
@@ -265,10 +266,10 @@ make_unix_socket(int style, bool nonblock, bool passcred UNUSED,
|
||||
return fd;
|
||||
|
||||
error:
|
||||
error = errno == EAGAIN ? EPROTO : errno;
|
||||
if (bind_path) {
|
||||
fatal_signal_remove_file_to_unlink(bind_path);
|
||||
}
|
||||
error = errno;
|
||||
close(fd);
|
||||
return -error;
|
||||
}
|
||||
|
Reference in New Issue
Block a user