mirror of
https://github.com/servalproject/serval-dna.git
synced 2025-02-05 18:49:12 +00:00
Add option to set SO_REUSEADDR to socket_bind() and use it.
This commit is contained in:
parent
4861ff9252
commit
719d1fe72c
@ -74,7 +74,7 @@ monitor_setup_sockets(void) {
|
||||
/* ignore SIGPIPE so that we don't explode */
|
||||
signal(SIGPIPE, SIG_IGN);
|
||||
|
||||
if ((monitor_named_socket = socket_bind(confValueGet("monitor.socket", DEFAULT_MONITOR_SOCKET_NAME))) == -1) {
|
||||
if ((monitor_named_socket = socket_bind(confValueGet("monitor.socket", DEFAULT_MONITOR_SOCKET_NAME), 0)) == -1) {
|
||||
WHY_perror("bind");
|
||||
goto error;
|
||||
}
|
||||
|
@ -21,27 +21,16 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#include <sys/stat.h>
|
||||
|
||||
int mdp_socket = -1;
|
||||
int overlay_mdp_setup_sockets()
|
||||
{
|
||||
struct sockaddr_un name;
|
||||
socklen_t len;
|
||||
int reuseP, send_buffer_size;
|
||||
int
|
||||
overlay_mdp_setup_sockets(void) {
|
||||
int send_buffer_size;
|
||||
|
||||
if (mdp_socket != -1)
|
||||
return 0;
|
||||
|
||||
socket_setname(&name, confValueGet("mdp.socket", DEFAULT_MDP_SOCKET_NAME), &len);
|
||||
|
||||
mdp_socket = socket(AF_UNIX, SOCK_DGRAM, 0);
|
||||
reuseP = 1;
|
||||
if(setsockopt(mdp_socket, SOL_SOCKET, SO_REUSEADDR,
|
||||
&reuseP, sizeof(reuseP)) < 0) {
|
||||
WARN_perror("setsockopt");
|
||||
goto error;
|
||||
}
|
||||
if (bind(mdp_socket, (struct sockaddr *)&name, len) == -1) {
|
||||
WARN_perror("bind");
|
||||
goto error;
|
||||
if ((mdp_socket = socket_bind(confValueGet("mdp.socket", DEFAULT_MDP_SOCKET_NAME), 1)) == -1) {
|
||||
WHY_perror("socket_bind");
|
||||
goto error;
|
||||
}
|
||||
|
||||
send_buffer_size = 64 * 1024;
|
||||
|
13
socket.c
13
socket.c
@ -39,14 +39,23 @@
|
||||
* more than one servald on a given system.
|
||||
*/
|
||||
int
|
||||
socket_bind(const char *name) {
|
||||
int s, oerrno;
|
||||
socket_bind(const char *name, int reuse) {
|
||||
int s, oerrno, reuseP;
|
||||
struct sockaddr_un sockname;
|
||||
socklen_t len;
|
||||
|
||||
if ((s = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
|
||||
return -1;
|
||||
|
||||
if (reuse) {
|
||||
reuseP = 1;
|
||||
if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR,
|
||||
&reuseP, sizeof(reuseP)) < 0) {
|
||||
close(s);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
socket_setname(&sockname, name, &len);
|
||||
unlink(sockname.sun_path);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user