# Packet Flow & Allocation Handling ## Komponenten - **UDP Listener** (`udp_reader_loop`): Empfängt STUN/TURN Nachrichten auf `bind` Adresse. - **AllocationManager**: Verwaltet Relay-Sockets je Client (`allocate_for`). - **TLS Listener** (`tls::serve_tls`): Optional, Wrappt dieselbe Logik über TCP/TLS. ## Ablauf (UDP) 1. `UdpSocket::recv_from` liest Paket, `parse_message` prüft STUN-Header. 2. Enthält `MESSAGE-INTEGRITY` → Username wird aus CredentialStore geladen und verifiziert. 3. Bei `ALLOCATE` → `AllocationManager` erstellt Relay-Port, sendet `XOR-RELAYED-ADDRESS` zurück. 4. Ohne gültige Credentials → Antwort `401 Unauthorized` mit `NONCE`. ## Ablauf (Relay) - Für jedes Allocation wird ein Task gespawnt, der Pakete vom Relay-Socket liest und sie zurück zum Client sendet. - TODO: Channel-Bindings und PeerData-Handling implementieren. ## TODOs - Allocation Timeout & Refresh Requests. - Permission Handling (CreatePermission). - Bandbreitenlimits, Statistik (Prometheus). - Shared Secret Mechanismus für Long-Term Credentials (RFC 5389/5766).