Skip to content

Commit 6244dd0

Browse files
add documentation for error returned by ParseRequest, use it in tests
1 parent 892f6e9 commit 6244dd0

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

integration/proxy/proxy.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package main
55
import (
66
"context"
77
"crypto/tls"
8+
"errors"
89
"fmt"
910
"log"
1011
"net"
@@ -175,6 +176,11 @@ func run(bindTo netip.AddrPort, remoteAddr netip.Addr, route netip.Prefix, ipPro
175176
mux.HandleFunc("/vpn", func(w http.ResponseWriter, r *http.Request) {
176177
req, err := connectip.ParseRequest(r, template)
177178
if err != nil {
179+
var perr *connectip.RequestParseError
180+
if errors.As(err, &perr) {
181+
w.WriteHeader(perr.HTTPStatus)
182+
return
183+
}
178184
w.WriteHeader(http.StatusBadRequest)
179185
return
180186
}

request.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ type RequestParseError struct {
4040
func (e *RequestParseError) Error() string { return e.Err.Error() }
4141
func (e *RequestParseError) Unwrap() error { return e.Err }
4242

43+
// ParseRequest parses a CONNECT-IP request.
44+
// The template is the URI template that clients will use to configure this proxy.
45+
// If an error is returned, it is a RequestParseError.
4346
func ParseRequest(r *http.Request, template *uritemplate.Template) (*Request, error) {
4447
if len(template.Varnames()) > 0 {
4548
return nil, errors.New("connect-ip-go currently does not support IP flow forwarding")

0 commit comments

Comments
 (0)