From 772aac5ea7859be84a423e97282434578d03c397 Mon Sep 17 00:00:00 2001
From: Florent Berthaut <florent.berthaut@univ-lille.fr>
Date: Thu, 19 Oct 2023 15:42:06 +0200
Subject: [PATCH] Fixed network

---
 core/IvmiScene.gd      |  5 +----
 core/net/GodOSC.gd     | 11 ++++++++++-
 core/net/IvmiDiscov.gd |  7 +++----
 3 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/core/IvmiScene.gd b/core/IvmiScene.gd
index be13df7..839dbb7 100644
--- a/core/IvmiScene.gd
+++ b/core/IvmiScene.gd
@@ -245,10 +245,7 @@ func _process(delta) :
 								_osc_output_address = peer["address"]
 								_osc_output_port = peer["port"]
 								_osc_to_pd.set_output(_osc_output_address, _osc_output_port)
-								var local_addr = "127.0.0.1"
-								for addr in IP.get_local_addresses() :
-									if not ":" in addr and addr!="127.0.0.1":
-										local_addr = addr
+								var local_addr = _osc_to_pd.get_local_address()
 								_osc_to_pd.send_msg("/ivmi/hello_from_gd","sf",[local_addr, _input_port])
 
 			PdMode.LIBPD : #libpd mode
diff --git a/core/net/GodOSC.gd b/core/net/GodOSC.gd
index b04890f..a631b8f 100644
--- a/core/net/GodOSC.gd
+++ b/core/net/GodOSC.gd
@@ -44,10 +44,19 @@ func has_msg() :
 
 func get_msg() :
 	return _unpack_osc(_socket.get_packet())
-	
+
 func get_last_peer() :
 	return {"address":_socket.get_packet_ip(), "port":_socket.get_packet_port()}
 	
+func get_local_address() -> String :
+	var address : String = "127.0.0.1"
+	
+	var addrs = IP.get_local_addresses()
+	for a in addrs :
+		if a!="127.0.0.1" and not a.contains(":") and not a.begins_with("169.") :
+			address=a
+	return address
+	
 func _make_osc_string(s,buff) :
 	buff.put_data(s.to_ascii_buffer())
 	buff.put_u8(0)
diff --git a/core/net/IvmiDiscov.gd b/core/net/IvmiDiscov.gd
index c80801c..1d84175 100644
--- a/core/net/IvmiDiscov.gd
+++ b/core/net/IvmiDiscov.gd
@@ -31,11 +31,10 @@ func start() :
 		_osc_discov.set_input_port(mcprt)
 	_osc_discov.set_multicast(mcadd)
 	
+	print(_osc_discov.get_local_address())
+	
 	#retrieve local address
-	_local_addr = "127.0.0.1"
-	for addr in IP.get_local_addresses() :
-		if addr!="127.0.0.1" and not ":" in addr :
-			_local_addr = addr
+	_local_addr = _osc_discov.get_local_address()
 
 func _process(delta) :
 	#when server send ping to multicast
-- 
GitLab