4.8 KiB
🖥️ DESKTOP XMPP CLIENT UPLOAD FIX - Dino & Gajim After Restart
🎯 Problem Analysis
Issue: Dino and Gajim can't upload after restart, Android works after reconnection
Root Cause: Desktop XMPP clients restore cached sessions with expired tokens, while mobile clients get fresh authentication.
⚡ IMMEDIATE FIX (Try This First!)
Step 1: Clear Client Caches
# Stop XMPP clients completely
pkill -f dino
pkill -f gajim
sleep 5
# Backup existing data (optional)
cp -r ~/.local/share/dino ~/.local/share/dino.backup 2>/dev/null || true
cp -r ~/.local/share/gajim ~/.local/share/gajim.backup 2>/dev/null || true
# Clear caches that may contain expired tokens
rm -rf ~/.cache/dino/ 2>/dev/null || true
rm -rf ~/.cache/gajim/ 2>/dev/null || true
# Clear specific upload-related cached files
find ~/.local/share/dino -name '*upload*' -delete 2>/dev/null || true
find ~/.local/share/gajim -name '*upload*' -delete 2>/dev/null || true
find ~/.local/share/dino -name '*token*' -delete 2>/dev/null || true
find ~/.local/share/gajim -name '*token*' -delete 2>/dev/null || true
# Restart clients
dino &
gajim &
Step 2: Test Upload
- Try uploading a small file in both Dino and Gajim
- Should work now with fresh authentication
🔧 ENHANCED SERVER SOLUTION
If the cache clearing doesn't work, deploy the enhanced server:
Deploy Enhanced Server
cd /root/hmac-file-server
# Use the enhanced server binary
./hmac-file-server-desktop-fixed -config config-mobile-resilient.toml
What the Enhanced Server Fixes:
- 24-hour grace period specifically for desktop XMPP clients (Dino, Gajim)
- 48-hour session restoration window for cached tokens after restart
- Enhanced detection of desktop vs mobile XMPP clients
- Special logging for desktop client authentication issues
📊 Technical Details
Enhanced Client Detection:
Desktop XMPP Clients: 24-hour grace period (session restoration)
Mobile XMPP Clients: 12-hour grace period (network switching)
Network Resilience: 72-hour ultra-grace period (critical scenarios)
Log Messages to Watch For:
🖥️ Desktop XMPP client detected (Dino/Gajim), using 24-hour grace period
🖥️ DESKTOP SESSION RESTORE: allowing within 48-hour restoration window
🌐 Network Configuration Check
Your setup: Notebook (WLAN + Ethernet) → Router → HMAC File Server
Potential Network Issues:
- Multiple interfaces may cause IP confusion
- Router NAT may assign different IPs after restart
- Cached connections may use old IP addresses
Check Network Configuration:
# Check active network interfaces
ip addr show | grep -E "(wlan|eth|eno|wlp)" -A2
# Check default routes
ip route show | grep default
# Check if multiple interfaces have IPs
ifconfig | grep "inet " | grep -v "127.0.0.1"
🚨 Troubleshooting Steps
If Upload Still Fails:
- Check Server Logs:
tail -f /var/log/hmac-file-server-mobile.log | grep -E "(Desktop|XMPP|token|auth)"
- Check Client User-Agent:
- Look for log entries showing how clients identify themselves
- Ensure Dino/Gajim are detected as desktop XMPP clients
- Verify Token Generation:
- Check if clients are getting fresh tokens after restart
- Look for "expired beyond grace period" messages
- Network Debugging:
# Check if clients can reach server
curl -I http://localhost:8080/health
# Check if router/NAT is affecting connections
netstat -tuln | grep 8080
💡 Why This Happens
Desktop vs Mobile Behavior:
- Desktop clients (Dino/Gajim): Save session state to disk, restore after restart
- Mobile clients: Reconnect fresh, get new authentication tokens
- Server: Original grace periods not sufficient for cached/restored sessions
Network Complexity:
- WLAN + Ethernet: Multiple network paths can confuse client IP detection
- Router NAT: May assign different internal IPs after restart
- Cached connections: Old network state restored with expired tokens
✅ Expected Results
After applying the fix:
- ✅ Dino uploads work immediately after restart
- ✅ Gajim uploads work immediately after restart
- ✅ Android continues working after disconnect/reconnect
- ✅ Network switching (WLAN ↔ Ethernet) handled gracefully
- ✅ Router IP changes don't break authentication
🎯 Summary
Root Cause: Desktop XMPP clients restore expired cached sessions
Quick Fix: Clear client caches to force fresh authentication
Long-term Fix: Enhanced server with 48-hour desktop session restoration
Network: Router setup is fine, issue is client-side session caching
The enhanced server now treats desktop XMPP clients with the same network resilience as mobile clients, plus special handling for session restoration scenarios.