diff options
author | Steffen Sledz <sledz@dresearch.de> | 2010-10-07 19:20:10 +0200 |
---|---|---|
committer | Steffen Sledz <sledz@dresearch.de> | 2010-10-07 19:22:13 +0200 |
commit | 65bd13c8c9e1779b99bf926688fb2d50a037c63d (patch) | |
tree | bdc1a0787d888cba13cbb8b83ed497fea7ee1abd /recipes/dbus | |
parent | d19b69a60ace72309ea79bb72e8a3dd091bafcee (diff) | |
download | openembedded-65bd13c8c9e1779b99bf926688fb2d50a037c63d.tar.gz |
dbus: backport SO_REUSEADDR handling for tcp dbusses from dbus git repo
Signed-off-by: Steffen Sledz <sledz@dresearch.de>
Diffstat (limited to 'recipes/dbus')
-rw-r--r-- | recipes/dbus/dbus/reuseaddr01.patch | 64 | ||||
-rw-r--r-- | recipes/dbus/dbus/reuseaddr02.patch | 38 | ||||
-rw-r--r-- | recipes/dbus/dbus_1.2.24.bb | 4 | ||||
-rw-r--r-- | recipes/dbus/dbus_1.3.1.bb | 4 |
4 files changed, 108 insertions, 2 deletions
diff --git a/recipes/dbus/dbus/reuseaddr01.patch b/recipes/dbus/dbus/reuseaddr01.patch new file mode 100644 index 0000000000..e291bb8949 --- /dev/null +++ b/recipes/dbus/dbus/reuseaddr01.patch @@ -0,0 +1,64 @@ +From 8f5f340b77b51fed1f036a9ee9f70a31b201f2c9 Mon Sep 17 00:00:00 2001 +From: Sledz <sledz@MOBIL-400-586.intern.dresearch.de> +Date: Tue, 29 Jun 2010 21:04:15 +0000 +Subject: sysdeps-unix: enable address reuse on TCP sockets + +This helps to avoid 'Address already in use' problems if server has been shut +down, and then restarted while sockets are still active on its port. + +Signed-off-by: Steffen Sledz <sledz@dresearch.de> +--- +diff --git a/dbus/dbus-sysdeps-unix.c b/dbus/dbus-sysdeps-unix.c +index ce3475a..b58d09a 100644 +--- a/dbus/dbus-sysdeps-unix.c ++++ b/dbus/dbus-sysdeps-unix.c +@@ -623,6 +623,7 @@ _dbus_listen_unix_socket (const char *path, + int listen_fd; + struct sockaddr_un addr; + size_t path_len; ++ unsigned int reuseaddr; + + _DBUS_ASSERT_ERROR_IS_CLEAR (error); + +@@ -696,7 +697,15 @@ _dbus_listen_unix_socket (const char *path, + + strncpy (addr.sun_path, path, path_len); + } +- ++ ++ reuseaddr = 1; ++ if (setsockopt (listen_fd, SOL_SOCKET, SO_REUSEADDR, &reuseaddr, sizeof(reuseaddr))==-1) ++ { ++ dbus_set_error (error, _dbus_error_from_errno (errno), ++ "Failed to set socket option\"%s\": %s", ++ path, _dbus_strerror (errno)); ++ } ++ + if (bind (listen_fd, (struct sockaddr*) &addr, _DBUS_STRUCT_OFFSET (struct sockaddr_un, sun_path) + path_len) < 0) + { + dbus_set_error (error, _dbus_error_from_errno (errno), +@@ -870,6 +879,7 @@ _dbus_listen_tcp_socket (const char *host, + int nlisten_fd = 0, *listen_fd = NULL, res, i; + struct addrinfo hints; + struct addrinfo *ai, *tmp; ++ unsigned int reuseaddr; + + *fds_p = NULL; + _DBUS_ASSERT_ERROR_IS_CLEAR (error); +@@ -915,6 +925,14 @@ _dbus_listen_tcp_socket (const char *host, + } + _DBUS_ASSERT_ERROR_IS_CLEAR(error); + ++ reuseaddr = 1; ++ if (setsockopt (fd, SOL_SOCKET, SO_REUSEADDR, &reuseaddr, sizeof(reuseaddr))==-1) ++ { ++ dbus_set_error (error, _dbus_error_from_errno (errno), ++ "Failed to set socket option \"%s:%s\": %s", ++ host ? host : "*", port, _dbus_strerror (errno)); ++ } ++ + if (bind (fd, (struct sockaddr*) tmp->ai_addr, tmp->ai_addrlen) < 0) + { + _dbus_close(fd, NULL); +-- +cgit v0.8.3-6-g21f6 diff --git a/recipes/dbus/dbus/reuseaddr02.patch b/recipes/dbus/dbus/reuseaddr02.patch new file mode 100644 index 0000000000..10bc7edfdc --- /dev/null +++ b/recipes/dbus/dbus/reuseaddr02.patch @@ -0,0 +1,38 @@ +From d365dd8141e709222f3a619d7b04ec4ded6429fd Mon Sep 17 00:00:00 2001 +From: Havoc Pennington <hp@pobox.com> +Date: Tue, 31 Aug 2010 15:59:09 +0000 +Subject: Change failure of setsockopt SO_REUSEADDR to be a warning, not set an error + +It was previously setting an error but then continuing, which is +not allowed since errors can't be "piled up" +--- +diff --git a/dbus/dbus-sysdeps-unix.c b/dbus/dbus-sysdeps-unix.c +index e4ff6ee..3205bed 100644 +--- a/dbus/dbus-sysdeps-unix.c ++++ b/dbus/dbus-sysdeps-unix.c +@@ -980,9 +980,8 @@ _dbus_listen_unix_socket (const char *path, + reuseaddr = 1; + if (setsockopt (listen_fd, SOL_SOCKET, SO_REUSEADDR, &reuseaddr, sizeof(reuseaddr))==-1) + { +- dbus_set_error (error, _dbus_error_from_errno (errno), +- "Failed to set socket option\"%s\": %s", +- path, _dbus_strerror (errno)); ++ _dbus_warn ("Failed to set socket option\"%s\": %s", ++ path, _dbus_strerror (errno)); + } + + if (bind (listen_fd, (struct sockaddr*) &addr, _DBUS_STRUCT_OFFSET (struct sockaddr_un, sun_path) + path_len) < 0) +@@ -1335,9 +1334,8 @@ _dbus_listen_tcp_socket (const char *host, + reuseaddr = 1; + if (setsockopt (fd, SOL_SOCKET, SO_REUSEADDR, &reuseaddr, sizeof(reuseaddr))==-1) + { +- dbus_set_error (error, _dbus_error_from_errno (errno), +- "Failed to set socket option \"%s:%s\": %s", +- host ? host : "*", port, _dbus_strerror (errno)); ++ _dbus_warn ("Failed to set socket option \"%s:%s\": %s", ++ host ? host : "*", port, _dbus_strerror (errno)); + } + + if (bind (fd, (struct sockaddr*) tmp->ai_addr, tmp->ai_addrlen) < 0) +-- +cgit v0.8.3-6-g21f6 diff --git a/recipes/dbus/dbus_1.2.24.bb b/recipes/dbus/dbus_1.2.24.bb index a2b7eea2a6..5ef1fef891 100644 --- a/recipes/dbus/dbus_1.2.24.bb +++ b/recipes/dbus/dbus_1.2.24.bb @@ -1,6 +1,6 @@ include dbus.inc -PR = "${INC_PR}.0" +PR = "${INC_PR}.1" SRC_URI = "\ http://dbus.freedesktop.org/releases/dbus/dbus-${PV}.tar.gz;name=dbus \ @@ -8,6 +8,8 @@ SRC_URI = "\ file://fix-install-daemon.patch \ file://0001-Make-the-default-DBus-reply-timeout-configurable.patch \ file://dbus-1.init \ + file://reuseaddr01.patch \ + file://reuseaddr02.patch \ " SRC_URI[dbus.md5sum] = "565346cecd9cfecf1463540c6086cc2c" diff --git a/recipes/dbus/dbus_1.3.1.bb b/recipes/dbus/dbus_1.3.1.bb index 2d09dc9ba5..b30bdab3c3 100644 --- a/recipes/dbus/dbus_1.3.1.bb +++ b/recipes/dbus/dbus_1.3.1.bb @@ -1,5 +1,5 @@ include dbus.inc -PR = "${INC_PR}.1" +PR = "${INC_PR}.2" SRC_URI = "\ http://dbus.freedesktop.org/releases/dbus/dbus-${PV}.tar.gz \ @@ -9,6 +9,8 @@ SRC_URI = "\ file://fix-install-daemon.patch \ file://add-configurable-reply-timeouts.patch \ file://dbus-1.init \ + file://reuseaddr01.patch \ + file://reuseaddr02.patch \ " # This is a development version of dbus that will lead to 1.4.0 |