fix: #8 Begrenzte HTTP-Ausführungsengine im privaten Proxy implementieren #24

Merged
frank merged 5 commits from agent/issue-8-begrenzte-http-ausführungsengine-im-pri into main 2026-07-17 12:48:13 +02:00
Owner
  • Wiederverwendete HTTP-Client-/Transport-Instanz mit expliziten DNS-, Connect-, TLS-, Header- und Gesamt-Timeouts
  • Harte Request-, Response-, Dekompressions- und Headerlimits
  • Redirect-Limit und Zielprüfung bei jedem Hop
  • Base64-kompatibles Antwortmodell mit finaler URL, Dauer und Truncation-Flag
  • Typisierte Tunnel-Fehler und reguläre Behandlung von HTTP-Fehlerstatus
  • Sichere Header-Normalisierung, Connection-Pooling und Idle-Close
  • httptest-Abdeckung für Methoden, Redirects, Kompression, Binärdaten, 404/500, Timeout, Cancel und endlose Responses

Alle Änderungen wurden in drei Commits gepusht. go test ./... und go vet ./... sind erfolgreich; der Arbeitsbaum ist sauber.
Prüfe die HTTP-Engine gegen Scope und Akzeptanzkriterien; fehlende, klar abgegrenzte Punkte werden mit Tests ergänzt und jeweils direkt committed und gepusht.Die Engine deckt die isolierte Ausführung ab, ist aber noch nicht an den Tunnel-Request-Lifecycle gebunden. Ich ergänze die Ausführungsschicht so, dass Frame-Deadline und Cancel tatsächlich bis net/http wirken und Response-/Fehlerframes stabil erzeugt werden.Tunnel-Frames werden nun mit ihrer absoluten Deadline in einen Request-Kontext überführt; Cancel erzeugt einen terminalen Fehlerframe und schließt die laufende Upstream-Anfrage. Ein End-to-End-Test deckt diese Kette ab.Die Tunnel-Antwort wird zusätzlich auf die effektive Framegrenze begrenzt: Base64-/JSON-Overhead kann einen ansonsten zulässigen HTTP-Body nicht mehr über die 8-MiB-Framegrenze treiben.PR_TITLE: feat(http): execute bounded tunnel HTTP requests
PR_BODY: Implements and wires the bounded HTTP engine into tunnel processing, including frame deadlines, cancellation propagation, typed errors, and frame-safe Base64 response truncation. Tests pass with go test ./....

Alles Implementiert

Closes #8

- Wiederverwendete HTTP-Client-/Transport-Instanz mit expliziten DNS-, Connect-, TLS-, Header- und Gesamt-Timeouts - Harte Request-, Response-, Dekompressions- und Headerlimits - Redirect-Limit und Zielprüfung bei jedem Hop - Base64-kompatibles Antwortmodell mit finaler URL, Dauer und Truncation-Flag - Typisierte Tunnel-Fehler und reguläre Behandlung von HTTP-Fehlerstatus - Sichere Header-Normalisierung, Connection-Pooling und Idle-Close - `httptest`-Abdeckung für Methoden, Redirects, Kompression, Binärdaten, 404/500, Timeout, Cancel und endlose Responses Alle Änderungen wurden in drei Commits gepusht. `go test ./...` und `go vet ./...` sind erfolgreich; der Arbeitsbaum ist sauber. Prüfe die HTTP-Engine gegen Scope und Akzeptanzkriterien; fehlende, klar abgegrenzte Punkte werden mit Tests ergänzt und jeweils direkt committed und gepusht.Die Engine deckt die isolierte Ausführung ab, ist aber noch nicht an den Tunnel-Request-Lifecycle gebunden. Ich ergänze die Ausführungsschicht so, dass Frame-Deadline und Cancel tatsächlich bis `net/http` wirken und Response-/Fehlerframes stabil erzeugt werden.Tunnel-Frames werden nun mit ihrer absoluten Deadline in einen Request-Kontext überführt; Cancel erzeugt einen terminalen Fehlerframe und schließt die laufende Upstream-Anfrage. Ein End-to-End-Test deckt diese Kette ab.Die Tunnel-Antwort wird zusätzlich auf die effektive Framegrenze begrenzt: Base64-/JSON-Overhead kann einen ansonsten zulässigen HTTP-Body nicht mehr über die 8-MiB-Framegrenze treiben.PR_TITLE: feat(http): execute bounded tunnel HTTP requests PR_BODY: Implements and wires the bounded HTTP engine into tunnel processing, including frame deadlines, cancellation propagation, typed errors, and frame-safe Base64 response truncation. Tests pass with `go test ./...`. Alles Implementiert Closes #8
Author
Owner

🚧 WIP pull request opened — linked to issue #8. Agent is working…

🚧 **WIP pull request opened** — linked to issue #8. Agent is working…
Author
Owner

💭 Agent progress

Inspecting tool call status
Ich prüfe zunächst Repository-Struktur, bestehende Tunnel-/Policy-Typen und Tests und setze die HTTP-Engine anschließend in kleinen, separat gepushten Commits um.

💭 **Agent progress** **Inspecting tool call status** Ich prüfe zunächst Repository-Struktur, bestehende Tunnel-/Policy-Typen und Tests und setze die HTTP-Engine anschließend in kleinen, separat gepushten Commits um.
Author
Owner

💭 Agent progress

Refining command execution strategy

💭 **Agent progress** **Refining command execution strategy**
Author
Owner

💭 Agent progress

Inspecting protocol README file

💭 **Agent progress** **Inspecting protocol README file**
Author
Owner

💭 Agent progress

Designing reusable httpexec validator package

Reviewing relevant git history

💭 **Agent progress** **Designing reusable httpexec validator package** **Reviewing relevant git history**
Author
Owner

💭 Agent progress

Outlining httpexec package API

Designing request and response models with limits

Planning compressed response truncation detection

Clarifying response truncation behavior

Planning header validation and redirect handling

Initiating patch application and file creation
Die bestehende Tunnel-Spezifikation setzt 6 MiB als Obergrenze und Base64 für Bodies. Ich ergänze eine eigenständige internal/httpexec-Engine mit wiederverwendetem Transport, typisierten Protokollfehlern, Redirect-Validierung pro Hop und getrennten Limits für übertragene und dekomprimierte Antworten.

💭 **Agent progress** **Outlining httpexec package API** **Designing request and response models with limits** **Planning compressed response truncation detection** **Clarifying response truncation behavior** **Planning header validation and redirect handling** **Initiating patch application and file creation** Die bestehende Tunnel-Spezifikation setzt 6 MiB als Obergrenze und Base64 für Bodies. Ich ergänze eine eigenständige `internal/httpexec`-Engine mit wiederverwendetem Transport, typisierten Protokollfehlern, Redirect-Validierung pro Hop und getrennten Limits für übertragene und dekomprimierte Antworten.
Author
Owner

💭 Agent progress

Aligning slice index syntax

💭 **Agent progress** **Aligning slice index syntax**
Author
Owner

💭 Agent progress

Planning test compile for race diff

💭 **Agent progress** **Planning test compile for race diff**
Author
Owner

💭 Agent progress

Planning comprehensive HTTP request tests

Implementing gzip limit reader improvements

Designing HTTP header validation logic

Planning test creation and patch application

💭 **Agent progress** **Planning comprehensive HTTP request tests** **Implementing gzip limit reader improvements** **Designing HTTP header validation logic** **Planning test creation and patch application**
Author
Owner

💭 Agent progress

Running gofmt tests

Fixing sandbox cache location

💭 **Agent progress** **Running gofmt tests** **Fixing sandbox cache location**
Author
Owner

💭 Agent progress

Fixing token parsing and test assertions

💭 **Agent progress** **Fixing token parsing and test assertions**
Author
Owner

💭 Agent progress

Reviewing HTTP body size limits and truncation

Refining response body truncation with compression limits

Adding tests for endless and error responses
Die Kernfälle laufen; beim Header-Test wurde ein Map-Reihenfolgefehler sichtbar: per Connection benannte Header mussten vor dem Kopieren gesammelt werden. Das ist korrigiert. Als Nächstes sichere ich unkomprimierte/endlose Responses explizit über den Truncation-Pfad ab.

💭 **Agent progress** **Reviewing HTTP body size limits and truncation** **Refining response body truncation with compression limits** **Adding tests for endless and error responses** Die Kernfälle laufen; beim Header-Test wurde ein Map-Reihenfolgefehler sichtbar: per `Connection` benannte Header mussten vor dem Kopieren gesammelt werden. Das ist korrigiert. Als Nächstes sichere ich unkomprimierte/endlose Responses explizit über den Truncation-Pfad ab.
Author
Owner

💭 Agent progress

Running full test suite

💭 **Agent progress** **Running full test suite**
Author
Owner

💭 Agent progress

Planning diff inspection and vetting

💭 **Agent progress** **Planning diff inspection and vetting**
Author
Owner

💭 Agent progress

Staging and preparing commit
Die HTTP-Engine ist jetzt vollständig durch httptest abgedeckt, einschließlich endloser Responses; sie beendet den Upstream nach 4-KiB-Testlimit und behält nur den begrenzten Body. Ich committe und pushe diesen abgeschlossenen Kern jetzt separat.

💭 **Agent progress** **Staging and preparing commit** Die HTTP-Engine ist jetzt vollständig durch `httptest` abgedeckt, einschließlich endloser Responses; sie beendet den Upstream nach 4-KiB-Testlimit und behält nur den begrenzten Body. Ich committe und pushe diesen abgeschlossenen Kern jetzt separat.
Author
Owner

💭 Agent progress

Assessing engine proxy integration issues

Planning protocol enhancements and header limits

Refining response compression handling

Refining content-encoding handling

Implementing header selection with encoding control
Der erste Commit ist gepusht (01f4dd0). Im zweiten Schritt ergänze ich die noch fehlende harte Response-Header-Grenze, sichere Connection-Pool-Wiederverwendung/Shutdown per Test ab und dokumentiere die erweiterten Tunnel-Response-Felder.

Inspecting patch application status

💭 **Agent progress** **Assessing engine proxy integration issues** **Planning protocol enhancements and header limits** **Refining response compression handling** **Refining content-encoding handling** **Implementing header selection with encoding control** Der erste Commit ist gepusht (`01f4dd0`). Im zweiten Schritt ergänze ich die noch fehlende harte Response-Header-Grenze, sichere Connection-Pool-Wiederverwendung/Shutdown per Test ab und dokumentiere die erweiterten Tunnel-Response-Felder. **Inspecting patch application status**
Author
Owner

💭 Agent progress

Planning smaller patches

💭 **Agent progress** **Planning smaller patches**
Author
Owner

💭 Agent progress

Testing import locations

💭 **Agent progress** **Testing import locations**
Author
Owner

💭 Agent progress

Applying tests

💭 **Agent progress** **Applying tests**
Author
Owner

💭 Agent progress

Applying gofmt formatting

💭 **Agent progress** **Applying gofmt formatting**
Author
Owner

💭 Agent progress

Adding test for large response header

💭 **Agent progress** **Adding test for large response header**
Author
Owner

💭 Agent progress

Inspecting gofmt alignment diff

💭 **Agent progress** **Inspecting gofmt alignment diff**
Author
Owner

💭 Agent progress

Adjusting JSON indent and adding header test

💭 **Agent progress** **Adjusting JSON indent and adding header test**
Author
Owner

💭 Agent progress

Testing header size limits

💭 **Agent progress** **Testing header size limits**
Author
Owner

💭 Agent progress

Preparing commit and push
Pooling, Idle-Close und die 64-KiB-Response-Header-Grenze sind verifiziert; 404/500 bleiben reguläre Responses. Die Tunnel-v1-Dokumentation beschreibt jetzt finale URL, Base64-Kennzeichnung, Dauer und Truncation. Ich committe und pushe dieses Hardening separat.

💭 **Agent progress** **Preparing commit and push** Pooling, Idle-Close und die 64-KiB-Response-Header-Grenze sind verifiziert; 404/500 bleiben reguläre Responses. Die Tunnel-v1-Dokumentation beschreibt jetzt finale URL, Base64-Kennzeichnung, Dauer und Truncation. Ich committe und pushe dieses Hardening separat.
Author
Owner

💭 Agent progress

Reviewing final audit and HTTP client behaviors

Enhancing redirect URL validation and max redirects handling

Defining MaxRedirects default and validating redirects

💭 **Agent progress** **Reviewing final audit and HTTP client behaviors** **Enhancing redirect URL validation and max redirects handling** **Defining MaxRedirects default and validating redirects**
Author
Owner

💭 Agent progress

Running tests before pushing
Beim finalen Redirect-Audit fehlte noch die strukturelle URL-Prüfung auf Folgehops. Redirects mit Userinfo oder Fragment werden nun bereits vor der Policy-Prüfung als policy_denied abgewiesen.

💭 **Agent progress** **Running tests before pushing** Beim finalen Redirect-Audit fehlte noch die strukturelle URL-Prüfung auf Folgehops. Redirects mit Userinfo oder Fragment werden nun bereits vor der Policy-Prüfung als `policy_denied` abgewiesen.
Author
Owner

💭 Agent progress

Verifying clean commits

💭 **Agent progress** **Verifying clean commits**
Author
Owner

🔍 Verifying implementation (attempt 1/3)

🔍 **Verifying implementation** (attempt 1/3)
Author
Owner

💭 Agent progress

Composing concise German PR comment with tests

  • Wiederverwendete HTTP-Client-/Transport-Instanz mit expliziten DNS-, Connect-, TLS-, Header- und Gesamt-Timeouts
  • Harte Request-, Response-, Dekompressions- und Headerlimits
  • Redirect-Limit und Zielprüfung bei jedem Hop
  • Base64-kompatibles Antwortmodell mit finaler URL, Dauer und Truncation-Flag
  • Typisierte Tunnel-Fehler und reguläre Behandlung von HTTP-Fehlerstatus
  • Sichere Header-Normalisierung, Connection-Pooling und Idle-Close
  • httptest-Abdeckung für Methoden, Redirects, Kompression, Binärdaten, 404/500, Timeout, Cancel und endlose Responses
    Alle Änderungen wurden in drei Commits gepusht. go test ./... und go vet ./... sind erfolgreich; der Arbeitsbaum ist sauber.Prüfe die HTTP-Engine gegen Scope und Akzeptanzkriterien; fehlende, klar abgegrenzte Punkte werden mit Tests ergänzt und jeweils direkt committed und gepusht.
💭 **Agent progress** **Composing concise German PR comment with tests** - Wiederverwendete HTTP-Client-/Transport-Instanz mit expliziten DNS-, Connect-, TLS-, Header- und Gesamt-Timeouts - Harte Request-, Response-, Dekompressions- und Headerlimits - Redirect-Limit und Zielprüfung bei jedem Hop - Base64-kompatibles Antwortmodell mit finaler URL, Dauer und Truncation-Flag - Typisierte Tunnel-Fehler und reguläre Behandlung von HTTP-Fehlerstatus - Sichere Header-Normalisierung, Connection-Pooling und Idle-Close - `httptest`-Abdeckung für Methoden, Redirects, Kompression, Binärdaten, 404/500, Timeout, Cancel und endlose Responses Alle Änderungen wurden in drei Commits gepusht. `go test ./...` und `go vet ./...` sind erfolgreich; der Arbeitsbaum ist sauber.Prüfe die HTTP-Engine gegen Scope und Akzeptanzkriterien; fehlende, klar abgegrenzte Punkte werden mit Tests ergänzt und jeweils direkt committed und gepusht.
Author
Owner

💭 Agent progress

Inspecting files and tests

💭 **Agent progress** **Inspecting files and tests**
Author
Owner

💭 Agent progress

Assessing tunnel integration and proxy use

💭 **Agent progress** **Assessing tunnel integration and proxy use**
Author
Owner

💭 Agent progress

Assessing tunnel lifecycle and connector integration

Clarifying proxy and connector design mismatch
Die Engine deckt die isolierte Ausführung ab, ist aber noch nicht an den Tunnel-Request-Lifecycle gebunden. Ich ergänze die Ausführungsschicht so, dass Frame-Deadline und Cancel tatsächlich bis net/http wirken und Response-/Fehlerframes stabil erzeugt werden.

Planning Session deadline handling

Designing connection serving with executor integration

💭 **Agent progress** **Assessing tunnel lifecycle and connector integration** **Clarifying proxy and connector design mismatch** Die Engine deckt die isolierte Ausführung ab, ist aber noch nicht an den Tunnel-Request-Lifecycle gebunden. Ich ergänze die Ausführungsschicht so, dass Frame-Deadline und Cancel tatsächlich bis `net/http` wirken und Response-/Fehlerframes stabil erzeugt werden. **Planning Session deadline handling** **Designing connection serving with executor integration**
Author
Owner

💭 Agent progress

Planning focused ExecuteProxyRequest implementation

Designing conservative tunnel connection loop

Implementing cancellation error handling

Updating deadline handling and transport loop

Refactoring listener engine injection and error handling

💭 **Agent progress** **Planning focused ExecuteProxyRequest implementation** **Designing conservative tunnel connection loop** **Implementing cancellation error handling** **Updating deadline handling and transport loop** **Refactoring listener engine injection and error handling**
Author
Owner

💭 Agent progress

Adding connector imports

💭 **Agent progress** **Adding connector imports**
Author
Owner

💭 Agent progress

Implementing session cancellation and write flushing

💭 **Agent progress** **Implementing session cancellation and write flushing**
Author
Owner

💭 Agent progress

Testing shared engine creation adjustment

💭 **Agent progress** **Testing shared engine creation adjustment**
Author
Owner

💭 Agent progress

Planning integration test using net.Pipe

Implementing cancellable HTTP test with httptest

💭 **Agent progress** **Planning integration test using net.Pipe** **Implementing cancellable HTTP test with httptest**
Author
Owner

💭 Agent progress

Planning concurrent tunnel test
Tunnel-Frames werden nun mit ihrer absoluten Deadline in einen Request-Kontext überführt; Cancel erzeugt einen terminalen Fehlerframe und schließt die laufende Upstream-Anfrage. Ein End-to-End-Test deckt diese Kette ab.

💭 **Agent progress** **Planning concurrent tunnel test** Tunnel-Frames werden nun mit ihrer absoluten Deadline in einen Request-Kontext überführt; Cancel erzeugt einen terminalen Fehlerframe und schließt die laufende Upstream-Anfrage. Ein End-to-End-Test deckt diese Kette ab.
Author
Owner

💭 Agent progress

Inspecting tunnel handler and payload limits

Adjusting response size limits and framing

Implementing response truncation with binary search

Implementing bounded response marshalling

Testing response size limits

💭 **Agent progress** **Inspecting tunnel handler and payload limits** **Adjusting response size limits and framing** **Implementing response truncation with binary search** **Implementing bounded response marshalling** **Testing response size limits**
Author
Owner

💭 Agent progress

Noting frame deadline overflow risk

Checking deadline overflow and redirect defaults
Die Tunnel-Antwort wird zusätzlich auf die effektive Framegrenze begrenzt: Base64-/JSON-Overhead kann einen ansonsten zulässigen HTTP-Body nicht mehr über die 8-MiB-Framegrenze treiben.

💭 **Agent progress** **Noting frame deadline overflow risk** **Checking deadline overflow and redirect defaults** Die Tunnel-Antwort wird zusätzlich auf die effektive Framegrenze begrenzt: Base64-/JSON-Overhead kann einen ansonsten zulässigen HTTP-Body nicht mehr über die 8-MiB-Framegrenze treiben.
Author
Owner

💭 Agent progress

Committing and pushing changes

💭 **Agent progress** **Committing and pushing changes**
Author
Owner

💭 Agent progress

Checking connection handling and closure logic

Verifying request body size handling and compression logic

Assessing response body decompression limits and updating docs

Clarifying handler state usage

💭 **Agent progress** **Checking connection handling and closure logic** **Verifying request body size handling and compression logic** **Assessing response body decompression limits and updating docs** **Clarifying handler state usage**
Author
Owner

💭 Agent progress

Inspecting unicode carriage returns

💭 **Agent progress** **Inspecting unicode carriage returns**
Author
Owner

💭 Agent progress

Applying separate line break encoding

💭 **Agent progress** **Applying separate line break encoding**
Author
Owner

💭 Agent progress

Preparing test and committing changes

💭 **Agent progress** **Preparing test and committing changes**
Author
Owner

💭 Agent progress

Inspecting git status output and cancellation behavior

💭 **Agent progress** **Inspecting git status output and cancellation behavior**
Author
Owner

Verify OK — agent reported Alles Implementiert

✅ **Verify OK** — agent reported Alles Implementiert
frank changed title from WIP: #8 Begrenzte HTTP-Ausführungsengine im privaten Proxy implementieren to fix: #8 Begrenzte HTTP-Ausführungsengine im privaten Proxy implementieren 2026-07-17 12:42:19 +02:00
Author
Owner

forge agent finished implementation

  • Commit: docs(http): document frame-safe truncation
  • Pull request: #24
  • Next: waiting for CI / babysitting fixes if needed
docs/protocol/tunnel-v1.md     | 2 ++
 internal/connector/listener.go | 4 ++--
 2 files changed, 4 insertions(+), 2 deletions(-)
Agent output (tail)
Ich prüfe zunächst Repository-Struktur, bestehende Tunnel-/Policy-Typen und Tests und setze die HTTP-Engine anschließend in kleinen, separat gepushten Commits um.Die bestehende Tunnel-Spezifikation setzt 6 MiB als Obergrenze und Base64 für Bodies. Ich ergänze eine eigenständige `internal/httpexec`-Engine mit wiederverwendetem Transport, typisierten Protokollfehlern, Redirect-Validierung pro Hop und getrennten Limits für übertragene und dekomprimierte Antworten.Die Kernfälle laufen; beim Header-Test wurde ein Map-Reihenfolgefehler sichtbar: per `Connection` benannte Header mussten vor dem Kopieren gesammelt werden. Das ist korrigiert. Als Nächstes sichere ich unkomprimierte/endlose Responses explizit über den Truncation-Pfad ab.Die HTTP-Engine ist jetzt vollständig durch `httptest` abgedeckt, einschließlich endloser Responses; sie beendet den Upstream nach 4-KiB-Testlimit und behält nur den begrenzten Body. Ich committe und pushe diesen abgeschlossenen Kern jetzt separat.Der erste Commit ist gepusht (`01f4dd0`). Im zweiten Schritt ergänze ich die noch fehlende harte Response-Header-Grenze, sichere Connection-Pool-Wiederverwendung/Shutdown per Test ab und dokumentiere die erweiterten Tunnel-Response-Felder.Pooling, Idle-Close und die 64-KiB-Response-Header-Grenze sind verifiziert; 404/500 bleiben reguläre Responses. Die Tunnel-v1-Dokumentation beschreibt jetzt finale URL, Base64-Kennzeichnung, Dauer und Truncation. Ich committe und pushe dieses Hardening separat.Beim finalen Redirect-Audit fehlte noch die strukturelle URL-Prüfung auf Folgehops. Redirects mit Userinfo oder Fragment werden nun bereits vor der Policy-Prüfung als `policy_denied` abgewiesen.PR_TITLE: Begrenzte HTTP-Ausführungsengine im privaten Proxy implementieren
PR_BODY:
- Wiederverwendete HTTP-Client-/Transport-Instanz mit expliziten DNS-, Connect-, TLS-, Header- und Gesamt-Timeouts
- Harte Request-, Response-, Dekompressions- und Headerlimits
- Redirect-Limit und Zielprüfung bei jedem Hop
- Base64-kompatibles Antwortmodell mit finaler URL, Dauer und Truncation-Flag
- Typisierte Tunnel-Fehler und reguläre Behandlung von HTTP-Fehlerstatus
- Sichere Header-Normalisierung, Connection-Pooling und Idle-Close
- `httptest`-Abdeckung für Methoden, Redirects, Kompression, Binärdaten, 404/500, Timeout, Cancel und endlose Responses
Alle Änderungen wurden in drei Commits gepusht. `go test ./...` und `go vet ./...` sind erfolgreich; der Arbeitsbaum ist sauber.
Prüfe die HTTP-Engine gegen Scope und Akzeptanzkriterien; fehlende, klar abgegrenzte Punkte werden mit Tests ergänzt und jeweils direkt committed und gepusht.Die Engine deckt die isolierte Ausführung ab, ist aber noch nicht an den Tunnel-Request-Lifecycle gebunden. Ich ergänze die Ausführungsschicht so, dass Frame-Deadline und Cancel tatsächlich bis `net/http` wirken und Response-/Fehlerframes stabil erzeugt werden.Tunnel-Frames werden nun mit ihrer absoluten Deadline in einen Request-Kontext überführt; Cancel erzeugt einen terminalen Fehlerframe und schließt die laufende Upstream-Anfrage. Ein End-to-End-Test deckt diese Kette ab.Die Tunnel-Antwort wird zusätzlich auf die effektive Framegrenze begrenzt: Base64-/JSON-Overhead kann einen ansonsten zulässigen HTTP-Body nicht mehr über die 8-MiB-Framegrenze treiben.PR_TITLE: feat(http): execute bounded tunnel HTTP requests
PR_BODY: Implements and wires the bounded HTTP engine into tunnel processing, including frame deadlines, cancellation propagation, typed errors, and frame-safe Base64 response truncation. Tests pass with `go test ./...`.
Alles Implementiert
✅ **forge agent finished implementation** - Commit: `docs(http): document frame-safe truncation` - Pull request: https://repository.hildebrandt.io/ai-tools/private-proxy-mcp/pulls/24 - Next: waiting for CI / babysitting fixes if needed ``` docs/protocol/tunnel-v1.md | 2 ++ internal/connector/listener.go | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) ``` <details><summary>Agent output (tail)</summary> ``` Ich prüfe zunächst Repository-Struktur, bestehende Tunnel-/Policy-Typen und Tests und setze die HTTP-Engine anschließend in kleinen, separat gepushten Commits um.Die bestehende Tunnel-Spezifikation setzt 6 MiB als Obergrenze und Base64 für Bodies. Ich ergänze eine eigenständige `internal/httpexec`-Engine mit wiederverwendetem Transport, typisierten Protokollfehlern, Redirect-Validierung pro Hop und getrennten Limits für übertragene und dekomprimierte Antworten.Die Kernfälle laufen; beim Header-Test wurde ein Map-Reihenfolgefehler sichtbar: per `Connection` benannte Header mussten vor dem Kopieren gesammelt werden. Das ist korrigiert. Als Nächstes sichere ich unkomprimierte/endlose Responses explizit über den Truncation-Pfad ab.Die HTTP-Engine ist jetzt vollständig durch `httptest` abgedeckt, einschließlich endloser Responses; sie beendet den Upstream nach 4-KiB-Testlimit und behält nur den begrenzten Body. Ich committe und pushe diesen abgeschlossenen Kern jetzt separat.Der erste Commit ist gepusht (`01f4dd0`). Im zweiten Schritt ergänze ich die noch fehlende harte Response-Header-Grenze, sichere Connection-Pool-Wiederverwendung/Shutdown per Test ab und dokumentiere die erweiterten Tunnel-Response-Felder.Pooling, Idle-Close und die 64-KiB-Response-Header-Grenze sind verifiziert; 404/500 bleiben reguläre Responses. Die Tunnel-v1-Dokumentation beschreibt jetzt finale URL, Base64-Kennzeichnung, Dauer und Truncation. Ich committe und pushe dieses Hardening separat.Beim finalen Redirect-Audit fehlte noch die strukturelle URL-Prüfung auf Folgehops. Redirects mit Userinfo oder Fragment werden nun bereits vor der Policy-Prüfung als `policy_denied` abgewiesen.PR_TITLE: Begrenzte HTTP-Ausführungsengine im privaten Proxy implementieren PR_BODY: - Wiederverwendete HTTP-Client-/Transport-Instanz mit expliziten DNS-, Connect-, TLS-, Header- und Gesamt-Timeouts - Harte Request-, Response-, Dekompressions- und Headerlimits - Redirect-Limit und Zielprüfung bei jedem Hop - Base64-kompatibles Antwortmodell mit finaler URL, Dauer und Truncation-Flag - Typisierte Tunnel-Fehler und reguläre Behandlung von HTTP-Fehlerstatus - Sichere Header-Normalisierung, Connection-Pooling und Idle-Close - `httptest`-Abdeckung für Methoden, Redirects, Kompression, Binärdaten, 404/500, Timeout, Cancel und endlose Responses Alle Änderungen wurden in drei Commits gepusht. `go test ./...` und `go vet ./...` sind erfolgreich; der Arbeitsbaum ist sauber. Prüfe die HTTP-Engine gegen Scope und Akzeptanzkriterien; fehlende, klar abgegrenzte Punkte werden mit Tests ergänzt und jeweils direkt committed und gepusht.Die Engine deckt die isolierte Ausführung ab, ist aber noch nicht an den Tunnel-Request-Lifecycle gebunden. Ich ergänze die Ausführungsschicht so, dass Frame-Deadline und Cancel tatsächlich bis `net/http` wirken und Response-/Fehlerframes stabil erzeugt werden.Tunnel-Frames werden nun mit ihrer absoluten Deadline in einen Request-Kontext überführt; Cancel erzeugt einen terminalen Fehlerframe und schließt die laufende Upstream-Anfrage. Ein End-to-End-Test deckt diese Kette ab.Die Tunnel-Antwort wird zusätzlich auf die effektive Framegrenze begrenzt: Base64-/JSON-Overhead kann einen ansonsten zulässigen HTTP-Body nicht mehr über die 8-MiB-Framegrenze treiben.PR_TITLE: feat(http): execute bounded tunnel HTTP requests PR_BODY: Implements and wires the bounded HTTP engine into tunnel processing, including frame deadlines, cancellation propagation, typed errors, and frame-safe Base64 response truncation. Tests pass with `go test ./...`. Alles Implementiert ``` </details>
Author
Owner

No CI / build job — skipping babysit.

⚪ **No CI / build job** — skipping babysit.
Author
Owner

📊 Agent usage (codex / ACP)

In tokens 1 652 (cached read 118 272)
Out tokens 450 (thought 182)
Limits context 54 712 / 258 400 · quota ok
Runtime 15m 2s
📊 **Agent usage** (`codex` / ACP) | | | | --- | --- | | In tokens | 1 652 (cached read 118 272) | | Out tokens | 450 (thought 182) | | Limits | context 54 712 / 258 400 · quota ok | | Runtime | 15m 2s |
Author
Owner

💭 Agent progress

Preparing final PR title and body

Ensuring exact PR body formatting

💭 **Agent progress** **Preparing final PR title and body** **Ensuring exact PR body formatting**
frank merged commit 13f5917301 into main 2026-07-17 12:48:13 +02:00
frank deleted branch agent/issue-8-begrenzte-http-ausführungsengine-im-pri 2026-07-17 12:48:14 +02:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
ai-tools/private-proxy-mcp!24
No description provided.