@@ -822,7 +822,12 @@ def test_address(node_factory):
822822
823823 # Now test UNIX domain binding
824824 l1 .stop ()
825- l1 .daemon .opts ['bind-addr' ] = os .path .join (l1 .daemon .lightning_dir , TEST_NETWORK , "sock" )
825+ bind_addr = os .path .join (l1 .daemon .lightning_dir , TEST_NETWORK , "sock" )
826+ if len (bind_addr ) >= 108 and os .uname ()[0 ] == "Linux" :
827+ bind_addr = os .path .join ('/proc/self/cwd' ,
828+ os .path .relpath (node_factory .directory , os .path .dirname (bind_addr )),
829+ os .path .relpath (bind_addr , node_factory .directory ))
830+ l1 .daemon .opts ['bind-addr' ] = bind_addr
826831 l1 .start ()
827832
828833 # Test dev-allow-localhost
@@ -878,12 +883,21 @@ def test_listconfigs_plugins(node_factory, bitcoind, chainparams):
878883 assert [p ['active' ] for p in plugins if p ['name' ].endswith ('offers' )] == [True ]
879884
880885
886+ def connect_unix (socket_path : str ):
887+ sock = socket .socket (socket .AF_UNIX , socket .SOCK_STREAM )
888+ try :
889+ sock .connect (socket_path )
890+ except OSError as err :
891+ if err .args [0 ] == 'AF_UNIX path too long' and os .uname ()[0 ] == 'Linux' :
892+ sock .connect (os .path .join ('/proc/self/cwd' , os .path .relpath (socket_path )))
893+ return sock
894+
895+
881896def test_multirpc (node_factory ):
882897 """Test that we can do multiple RPC without waiting for response"""
883898 l1 = node_factory .get_node ()
884899
885- sock = socket .socket (socket .AF_UNIX , socket .SOCK_STREAM )
886- sock .connect (l1 .rpc .socket_path )
900+ sock = connect_unix (l1 .rpc .socket_path )
887901
888902 commands = [
889903 b'{"id":1,"jsonrpc":"2.0","method":"listpeers","params":[]}' ,
@@ -909,8 +923,7 @@ def test_multiplexed_rpc(node_factory):
909923 """Test that we can do multiple RPCs which exit in different orders"""
910924 l1 = node_factory .get_node ()
911925
912- sock = socket .socket (socket .AF_UNIX , socket .SOCK_STREAM )
913- sock .connect (l1 .rpc .socket_path )
926+ sock = connect_unix (l1 .rpc .socket_path )
914927
915928 # Neighbouring ones may be in or out of order.
916929 commands = [
@@ -940,8 +953,7 @@ def test_malformed_rpc(node_factory):
940953 """Test that we get a correct response to malformed RPC commands"""
941954 l1 = node_factory .get_node ()
942955
943- sock = socket .socket (socket .AF_UNIX , socket .SOCK_STREAM )
944- sock .connect (l1 .rpc .socket_path )
956+ sock = connect_unix (l1 .rpc .socket_path )
945957
946958 # No ID
947959 sock .sendall (b'{"jsonrpc":"2.0","method":"getinfo","params":[]}' )
@@ -2032,8 +2044,7 @@ def test_check_command(node_factory):
20322044 host = 'x' , port = "abcd" )
20332045
20342046 # FIXME: python wrapper doesn't let us test array params.
2035- sock = socket .socket (socket .AF_UNIX , socket .SOCK_STREAM )
2036- sock .connect (l1 .rpc .socket_path )
2047+ sock = connect_unix (l1 .rpc .socket_path )
20372048
20382049 sock .sendall (b'{"id":1, "jsonrpc":"2.0","method":"check","params":["help"]}' )
20392050 obj , _ = l1 .rpc ._readobj (sock , b'' )
0 commit comments