diff --git a/package/secubox/secubox-p2p/root/usr/sbin/secubox-p2p b/package/secubox/secubox-p2p/root/usr/sbin/secubox-p2p index 49cad545..643e27dd 100644 --- a/package/secubox/secubox-p2p/root/usr/sbin/secubox-p2p +++ b/package/secubox/secubox-p2p/root/usr/sbin/secubox-p2p @@ -357,10 +357,14 @@ get_services() { # Get shared services (from peers) get_shared_services() { local all_services="[]" - local peers=$(get_peers | jq -r '.peers[] | select(.status=="online") | select(.is_local != true) | .address') + # Use active_address if available, skip IPv6 and local nodes + local peers=$(get_peers | jq -r '.peers[] | select(.status=="online") | select(.is_local==false or .is_local==null) | .active_address // .address' | grep -v '^\[' | sed 's/ .*//') for peer_addr in $peers; do - local response=$(curl -s --connect-timeout 2 "http://${peer_addr}/cgi-bin/p2p-services" 2>/dev/null) + [ -z "$peer_addr" ] && continue + [ "$peer_addr" = "null" ] && continue + # Fetch services with reasonable timeout + local response=$(curl -s --connect-timeout 2 --max-time 10 "http://${peer_addr}/cgi-bin/p2p-services" 2>/dev/null) if [ -n "$response" ]; then local peer_services=$(echo "$response" | jq -c '.services // []' 2>/dev/null) if [ -n "$peer_services" ] && [ "$peer_services" != "null" ] && [ "$peer_services" != "[]" ]; then