* [2.7] Don't fail if a remote_addr with a '/' hits ansible_connection (#49781)
* Fail if a remote_addr with a '/' hist ansible_connection
This is _probably_ a CIDR block, but anything with a slash will fail,
so no need to try to parse to make sure
* Locks are now per-socket_path.
Locks use the same value as socket_path. Locks are also cleaned up in
shutdown like sockets.
(cherry picked from commit 61a649c
)
Co-authored-by: Nathaniel Case <this.is@nathanielca.se>
* Add changelog
This commit is contained in:
parent
47228b8cf1
commit
bfa41db5f0
2 changed files with 12 additions and 1 deletions
|
@ -182,6 +182,7 @@ class ConnectionProcess(object):
|
|||
def shutdown(self):
|
||||
""" Shuts down the local domain socket
|
||||
"""
|
||||
lock_path = unfrackpath("%s/.ansible_pc_lock_%s" % os.path.split(self.socket_path))
|
||||
if os.path.exists(self.socket_path):
|
||||
try:
|
||||
if self.sock:
|
||||
|
@ -195,6 +196,10 @@ class ConnectionProcess(object):
|
|||
os.remove(self.socket_path)
|
||||
setattr(self.connection, '_socket_path', None)
|
||||
setattr(self.connection, '_connected', False)
|
||||
|
||||
if os.path.exists(lock_path):
|
||||
os.remove(lock_path)
|
||||
|
||||
display.display('shutdown complete', log_only=True)
|
||||
|
||||
|
||||
|
@ -249,8 +254,8 @@ def main():
|
|||
tmp_path = unfrackpath(C.PERSISTENT_CONTROL_PATH_DIR)
|
||||
makedirs_safe(tmp_path)
|
||||
|
||||
lock_path = unfrackpath("%s/.ansible_pc_lock_%s" % (tmp_path, play_context.remote_addr))
|
||||
socket_path = unfrackpath(cp % dict(directory=tmp_path))
|
||||
lock_path = unfrackpath("%s/.ansible_pc_lock_%s" % os.path.split(socket_path))
|
||||
|
||||
with file_lock(lock_path):
|
||||
if not os.path.exists(socket_path):
|
||||
|
|
6
changelogs/fragments/persistent-socket-lock-name.yaml
Normal file
6
changelogs/fragments/persistent-socket-lock-name.yaml
Normal file
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
bugfixes:
|
||||
- Changes how ansible-connection names socket lock files. They now use
|
||||
the same name as the socket itself, and as such do not lock other
|
||||
attempts on connections to the same host, or cause issues with
|
||||
overly-long hostnames.
|
Loading…
Reference in a new issue