In case more than one openvpn connection is coming up or going down at
the same time, there is potential for breakage, since the operations
performed are not atomic.
Introduce a locking mechanism, which let's scripts run in sequence, to
prevent races between them.
Change-Id: I7adfaa08df6a17545cca8264d7230b5e65e49719
Signed-off-by: Heiko Hund <heiko@ist.eigentlich.net>
Acked-by: Arne Schwabe <arne-openvpn@rfc2549.org>
Message-Id: <
20250711100700.241668-1-frank@lichtenheld.com>
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg32108.html
Signed-off-by: Gert Doering <gert@greenie.muc.de>
# dns_server_1_sni dns.mycorp.in
#
+lockdir=/var/lock
+if [ ! -d "${lockdir}" ]; then
+ /bin/mkdir "${lockdir}"
+ /bin/chmod 1777 "${lockdir}"
+fi
+
+i=1
+lockfile="${lockdir}/openvpn-dns-updown.lock"
+while ! /usr/bin/shlock -f $lockfile -p $$; do
+ if [ $((++i)) -gt 10 ]; then
+ echo "dns-updown failed, could not acquire lock"
+ exit 1
+ fi
+ sleep 0.2
+done
+trap "/bin/rm -f ${lockfile}" EXIT
+
[ -z "${dns_vars_file}" ] || . "${dns_vars_file}"
itf_dns_key="State:/Network/Service/openvpn-${dev}/DNS"