#!/bin/bash
# Wirecore Relay - Stop Script
# Stops the relay server gracefully
set -e
PID_FILE="/tmp/wirecore-relay.pid"
if [ ! -f "$PID_FILE" ]; then
echo "⚠️ No PID file found at $PID_FILE"
echo "Relay may not be running, or was started manually."
echo ""
echo "To stop manually:"
echo " pkill -f 'node.*wirecore-relay'"
exit 1
fi
PID=$(cat "$PID_FILE")
if ! ps -p "$PID" > /dev/null 2>&1; then
echo "⚠️ Process $PID not running (stale PID file)"
rm -f "$PID_FILE"
exit 0
fi
echo "🛑 Stopping Wirecore Relay (PID: $PID)..."
# Send SIGINT for graceful shutdown (triggers apds.close())
kill -INT "$PID"
# Wait up to 10 seconds
for i in {1..10}; do
if ! ps -p "$PID" > /dev/null 2>&1; then
echo "✅ Relay stopped gracefully"
rm -f "$PID_FILE"
exit 0
fi
sleep 1
done
# Force kill if still running
echo "⚠️ Graceful shutdown timed out, forcing..."
kill -9 "$PID" 2>/dev/null || true
rm -f "$PID_FILE"
echo "✅ Relay stopped (forced)"