fix(ipfs): Remove process::exit that caused premature shutdown
The IPFS initialization thread was calling std::process::exit(0) when the
ipfs_command_handler task completed, causing the entire hermes process to
exit cleanly after 1-2 minutes of runtime.
Root cause:
- IPFS node spawned a background thread (ipfs/mod.rs:101)
- Thread ran ipfs_command_handler in a tokio runtime
- When handler task finished, tokio::join! completed
- Thread then called std::process::exit(0), killing entire process
This resulted in:
- Nodes exiting with status 0 (clean exit, no error logs)
- P2P connections working initially but then everything stopped
- Consistent timing (~1-2 minutes until exit)
Fix:
- Removed std::process::exit(0) call
- Added proper error logging for IPFS thread failures
- Thread now returns naturally instead of killing the process
Impact:
- Nodes now run indefinitely as intended
- Multi-node P2P testing infrastructure is stable
- PubSub discovery and connectivity working correctly