1
0
mirror of https://gitlab.com/obbart/universal_robots_ros_driver.git synced 2026-04-10 18:10:47 +02:00

Fixed SO_REUSEADDR being set after bind rather than before

This commit is contained in:
Simon Rasmussen
2017-07-21 19:01:57 +02:00
parent b5f9b69303
commit dbcf8aeb41
2 changed files with 10 additions and 14 deletions

View File

@@ -15,11 +15,7 @@ private:
TCPSocket client_;
protected:
virtual bool open(int socket_fd, struct sockaddr *address, size_t address_len)
{
return ::bind(socket_fd, address, address_len) == 0;
}
virtual void setOptions(int socket_fd);
virtual bool open(int socket_fd, struct sockaddr *address, size_t address_len);
public:
URServer(int port);

View File

@@ -14,14 +14,6 @@ URServer::~URServer()
TCPSocket::close();
}
void URServer::setOptions(int socket_fd)
{
TCPSocket::setOptions(socket_fd);
int flag = 1;
setsockopt(socket_fd, SOL_SOCKET, SO_REUSEADDR, &flag, sizeof(int));
}
std::string URServer::getIP()
{
sockaddr_in name;
@@ -39,6 +31,14 @@ std::string URServer::getIP()
return std::string(buf);
}
bool URServer::open(int socket_fd, struct sockaddr *address, size_t address_len)
{
int flag = 1;
setsockopt(socket_fd, SOL_SOCKET, SO_REUSEADDR, &flag, sizeof(int));
return ::bind(socket_fd, address, address_len) == 0;
}
bool URServer::bind()
{
std::string empty;
@@ -65,7 +65,7 @@ bool URServer::accept()
if (client_fd <= 0)
return false;
setOptions(client_fd);
TCPSocket::setOptions(client_fd);
return client_.setSocketFD(client_fd);
}