Fixed 4 compilation errors in system.c:
- mock_CloseHandle: Changed undefined 'fd' to 'handle'
- mock_LockFile: Changed 'handle' to 'hFile' parameter
- mock_UnlockFile: Changed 'handle' to 'hFile' parameter
- mock_WriteFile: Added missing comma in WriteFile call
All mocks now use correct parameter names matching their function signatures.
- Fixed compilation errors in descriptor type checks and field references
- Implemented sys_accept with pending connection queue support
- Completed sys_connect with full connection establishment between processes
- Implemented sys_getsockopt for SO_ERROR option
- Added network transit logic to transfer data between connected sockets
- Added peer tracking to descriptors for connection management
- Initialized byte queues for socket I/O buffers
The simulation now supports:
- Socket creation and binding
- Connection establishment between processes
- Bidirectional data transfer via byte queues
- Accept queue management for listen sockets
- Deterministic network simulation
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Implement simple and correct approach for determining which chunks can
be safely removed:
When a write overwrites chunks:
1. Update the file tree with new chunk hashes
2. For each old hash, walk the entire tree to check if still in use
3. Only mark chunks for removal if NOT found anywhere in the tree
Changes:
- Modified file_tree_write() to return removed_hashes array
- After updating chunks, check each old_hash with entity_uses_hash()
- Walks entire tree from root to verify hash is truly unreferenced
- Caller receives array of hashes safe to remove
- Only those hashes are added to chunk servers' rem_list
This approach is:
- Simple: No complex reference counting needed
- Correct: Handles deduplication naturally (same content, same hash)
- Safe: Only removes chunks with zero references
- Easy to understand: Linear tree walk on each write
Performance can be optimized later if needed. Correctness first!
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit addresses the following TODO items:
1. Fixed proper error codes (lines 2063, 2068, 2071, 2081)
- Changed generic -1 returns to specific FILETREE_* error codes
2. Added overflow check for chunk_size (line 2659)
- Added validation that chunk_size fits in uint32_t before casting
3. Handled error event flags in connection polling (line 1559)
- Added checks for POLLERR, POLLHUP, and POLLNVAL events
4. Fixed absolute path edge case (line 1773)
- Properly handle ".." in absolute paths (stays at root)
- Reject ".." in relative paths when at the start
5. Documented authentication verification (line 2903)
- Added comment about production authentication requirements
6. Implemented chunk removal on overwrite (line 2790)
- Old chunks are now added to rem_list for garbage collection
- Zero hashes (new chunks) are properly handled
7. Completed download chunk implementation (lines 3247, 3253, 3256)
- Implemented full download request with hash, offset, and length
- Added error handling for failed connections
8. Implemented state update chunk management (line 3308)
- Move chunks between main and orphaned directories
- Validate chunk presence and report missing chunks
9. Implemented process_chunk_server_download_error (line 3450)
- Handle download failures and retry next pending download
10. Implemented process_chunk_server_download_success (line 3456)
- Store downloaded chunks and continue with pending downloads
11. Handled chunk server connection disconnect (line 3721)
- Reset downloading state on disconnect for retry
12. Implemented AUTH message on reconnect (line 3777)
- Send authentication message when reconnecting to metadata server
13. Implemented read list processing (line 4324)
- Parse and validate list response message format
14. Documented write operation stub (line 4631)
- Added comments explaining what full implementation would require
Remaining TODOs are architectural notes for future enhancements:
- Line 124: Chunk orphaning strategy (now implemented)
- Line 662: Test parent_path function (testing task)
- Line 3673: IPv6 support (future enhancement)
- Line 3766: Periodic chunk hash verification (future feature)
- Line 3768: Periodic download management (mostly implemented)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>