Files
Linux-Server-Management-Too…/lib
Developer ce8babe62f CRITICAL FIX: Fix subshell array corruption in domain discovery
ISSUE:
Pipe-to-while loops created subshells, preventing seen_domains array updates
from persisting to parent shell. This caused:
1. Duplicate domains in reference database
2. Database corruption
3. Inefficient double processing of domains

FIXES:

1. Lines 416-444: Changed pipe-based while to here-document
   - BEFORE: get_user_domains "$user" | while IFS= read -r domain; do
   - AFTER: while IFS= read -r domain; do ... done <<< "$user_domains"
   - Result: seen_domains updates now persist to parent shell

2. Lines 416-417: Call get_user_domains() only once
   - BEFORE: Called twice (lines 417 and 420)
   - AFTER: Called once, stored in $user_domains
   - Result: No duplicate function calls

3. Line 422: Added check for empty primary_domain
   - BEFORE: [ "$domain" = "$primary_domain" ]
   - AFTER: [ -n "$primary_domain" ] && [ "$domain" = "$primary_domain" ]
   - Result: Handles edge case where user has no domains

4. Lines 405-412: Fixed alias iteration subshell issue
   - BEFORE: echo ... | tr ... | while IFS= read -r alias; do
   - AFTER: while IFS= read -r alias; do ... done <<< "$(echo ... | tr ...)"
   - Result: seen_domains["alias"] updates persist

TESTING:
- bash -n validates syntax
- Logic verified for subshell fix
- Array updates will now persist to parent shell

Impact:
- Reference database no longer corrupted with duplicates
- Proper domain deduplication via seen_domains array
- Database building now works correctly

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-19 22:05:52 -04:00
..