Skip to content

Commit b161d34

Browse files
authored
fix proxy stuck on blocking malicious package (#153)
* fix proxy stuck on blocking malicious package * update pmg e2e
1 parent f189127 commit b161d34

File tree

2 files changed

+21
-4
lines changed

2 files changed

+21
-4
lines changed

.github/workflows/pmg-e2e.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ jobs:
164164
echo "Testing pip manifest installation via proxy mode..."
165165
pmg pip freeze > requirements.txt
166166
pmg pip uninstall -y requests numpy
167-
pmg pip install -r requirements.txt
167+
pmg pip install -r <(grep -v '^PMG:' requirements.txt)
168168
python -c "import requests, numpy; print('pip manifest ok:', requests.__version__, numpy.__version__)"
169169
deactivate
170170
@@ -183,7 +183,7 @@ jobs:
183183
echo "Testing pip3 manifest installation via proxy mode..."
184184
pmg pip3 freeze > requirements3.txt
185185
pmg pip3 uninstall -y requests numpy
186-
pmg pip3 install -r requirements3.txt
186+
pmg pip3 install -r <(grep -v '^PMG:' requirements3.txt)
187187
python -c "import requests, numpy; print('pip3 manifest ok:', requests.__version__, numpy.__version__)"
188188
deactivate
189189
@@ -205,7 +205,7 @@ jobs:
205205
206206
echo "Testing uv pip install from requirements via proxy mode..."
207207
pmg uv pip freeze > requirements.txt
208-
pmg uv pip install -r requirements.txt
208+
pmg uv pip install -r <(grep -v '^PMG:' requirements.txt)
209209
pmg uv pip show requests >/dev/null
210210
pmg uv pip show numpy >/dev/null
211211
cd ..

proxy/proxy.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,8 +283,25 @@ func (ps *proxyServer) registerHandlers() {
283283
}
284284

285285
log.Debugf("[%s] Blocked by %s: %s", reqCtx.RequestID, interceptor.Name(), req.URL.String())
286+
r := goproxy.NewResponse(req, goproxy.ContentTypeText, statusCode, message)
287+
288+
// goproxy v1.8.x writes the response via (*http.Response).Write for MITM traffic.
289+
// Ensure the protocol version is valid (defaults to HTTP/0.0 otherwise).
290+
// Ref: https://github.com/elazarl/goproxy/issues/745
291+
if req.ProtoMajor > 0 {
292+
r.Proto = req.Proto
293+
r.ProtoMajor = req.ProtoMajor
294+
r.ProtoMinor = req.ProtoMinor
295+
} else {
296+
r.Proto = "HTTP/1.1"
297+
r.ProtoMajor = 1
298+
r.ProtoMinor = 1
299+
}
300+
r.Close = true
301+
r.Header.Set("Connection", "close")
302+
r.Header.Set("Proxy-Connection", "close")
286303

287-
return req, goproxy.NewResponse(req, goproxy.ContentTypeText, statusCode, message)
304+
return req, r
288305

289306
case ActionModifyRequest:
290307
if resp.ModifiedHeaders != nil {

0 commit comments

Comments
 (0)