Skip to content
This repository was archived by the owner on Nov 13, 2025. It is now read-only.

Commit 8a58814

Browse files
committed
cleanup: remove hijacking code, a proper implementation is available at docker-client/docker-remote-api-client
1 parent 2112bf1 commit 8a58814

File tree

11 files changed

+14
-737
lines changed

11 files changed

+14
-737
lines changed

engine/src/main/java/de/gesellix/docker/engine/AttachConfig.java

Lines changed: 0 additions & 119 deletions
This file was deleted.

engine/src/main/java/de/gesellix/docker/engine/EngineRequest.java

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ public class EngineRequest {
1919
private int timeout = 0;
2020

2121
private boolean async = false;
22-
private AttachConfig attach = null;
2322
private OutputStream stdout;
2423

2524
private String apiVersion = null;
@@ -93,14 +92,6 @@ public void setAsync(boolean async) {
9392
this.async = async;
9493
}
9594

96-
public AttachConfig getAttach() {
97-
return attach;
98-
}
99-
100-
public void setAttach(AttachConfig attach) {
101-
this.attach = attach;
102-
}
103-
10495
public OutputStream getStdout() {
10596
return stdout;
10697
}
@@ -124,11 +115,11 @@ public boolean equals(Object o) {
124115
EngineRequest that = (EngineRequest) o;
125116
return timeout == that.timeout && async == that.async && method == that.method && Objects.equals(path, that.path) && Objects.equals(headers, that.headers) &&
126117
Objects.equals(query, that.query) && Objects.equals(contentType, that.contentType) && Objects.equals(body, that.body) &&
127-
Objects.equals(attach, that.attach) && Objects.equals(stdout, that.stdout) && Objects.equals(apiVersion, that.apiVersion);
118+
Objects.equals(stdout, that.stdout) && Objects.equals(apiVersion, that.apiVersion);
128119
}
129120

130121
@Override
131122
public int hashCode() {
132-
return Objects.hash(method, path, headers, query, contentType, body, timeout, async, attach, stdout, apiVersion);
123+
return Objects.hash(method, path, headers, query, contentType, body, timeout, async, stdout, apiVersion);
133124
}
134125
}

engine/src/main/java/de/gesellix/docker/engine/OkDockerClient.java

Lines changed: 12 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
import de.gesellix.docker.client.filesocket.NamedPipeSocketFactory;
77
import de.gesellix.docker.client.filesocket.UnixSocketFactory;
88
import de.gesellix.docker.client.filesocket.UnixSocketFactorySupport;
9-
import de.gesellix.docker.hijack.HijackingInterceptor;
10-
import de.gesellix.docker.hijack.OkResponseCallback;
119
import de.gesellix.docker.json.CustomObjectAdapterFactory;
1210
import de.gesellix.docker.rawstream.RawInputStream;
1311
import de.gesellix.docker.response.JsonContentHandler;
@@ -148,60 +146,30 @@ public WebSocket webSocket(Map<String, Object> requestConfig, WebSocketListener
148146
public EngineResponse request(EngineRequest requestConfig) {
149147
EngineRequest config = ensureValidRequestConfig(requestConfig);
150148

151-
AttachConfig attachConfig = null;
152-
if (config.getAttach() != null) {
153-
Map<String, String> headers = config.getHeaders();
154-
if (headers == null) {
155-
headers = new HashMap<>();
156-
}
157-
config.setHeaders(headers);
158-
// https://docs.docker.com/engine/api/v1.41/#operation/ContainerAttach
159-
// To hint potential proxies about connection hijacking, the Docker client sends connection upgrade headers.
160-
headers.put("Upgrade", "tcp");
161-
headers.put("Connection", "Upgrade");
162-
attachConfig = config.getAttach();
163-
}
164-
// boolean multiplexStreams = config.multiplexStreams
165-
166149
Request.Builder requestBuilder = prepareRequest(new Request.Builder(), config);
167150
final Request request = requestBuilder.build();
168151

169152
OkHttpClient.Builder clientBuilder = prepareClient(new OkHttpClient.Builder(), config.getTimeout());
170-
OkResponseCallback responseCallback = null;
171-
if (attachConfig != null) {
172-
clientBuilder.addNetworkInterceptor(new HijackingInterceptor(
173-
attachConfig,
174-
attachConfig.getStreams().getStdin() == null ? null : Okio.source(attachConfig.getStreams().getStdin()),
175-
attachConfig.getStreams().getStdout() == null ? null : Okio.sink(attachConfig.getStreams().getStdout())));
176-
responseCallback = new OkResponseCallback(attachConfig);
177-
}
178153
final OkHttpClient client = newClient(clientBuilder);
179154

180155
log.debug(request.method() + " " + request.url() + " using proxy: " + client.proxy());
181156

182157
Call call = client.newCall(request);
183-
if (responseCallback != null) {
184-
call.enqueue(responseCallback);
185-
log.debug("request enqueued");
186-
return new EngineResponse<Void>();
187-
}
188-
else {
189-
EngineResponse dockerResponse;
190-
try {
191-
Response response = call.execute();
192-
log.debug("response: " + response);
193-
dockerResponse = handleResponse(response, config);
194-
if (dockerResponse.getStream() == null) {
158+
EngineResponse dockerResponse;
159+
try {
160+
Response response = call.execute();
161+
log.debug("response: " + response);
162+
dockerResponse = handleResponse(response, config);
163+
if (dockerResponse.getStream() == null) {
195164
// log.warn("closing response...");
196-
response.close();
197-
}
198-
}
199-
catch (Exception e) {
200-
log.error("Request failed", e);
201-
throw new RuntimeException("Request failed", e);
165+
response.close();
202166
}
203-
return dockerResponse;
204167
}
168+
catch (Exception e) {
169+
log.error("Request failed", e);
170+
throw new RuntimeException("Request failed", e);
171+
}
172+
return dockerResponse;
205173
}
206174

207175
private Request.Builder prepareRequest(final Request.Builder builder, final EngineRequest config) {
@@ -526,7 +494,6 @@ private EngineRequest ensureValidRequestConfig(final Map<String, Object> config,
526494
engineRequest.setBody(config.get("body"));
527495

528496
engineRequest.setAsync(config.get("async") != null && (Boolean) config.get("async"));
529-
engineRequest.setAttach((AttachConfig) config.get("attach"));
530497
engineRequest.setStdout((OutputStream) config.get("stdout"));
531498

532499
engineRequest.setApiVersion((String) config.get("apiVersion"));

engine/src/main/java/de/gesellix/docker/engine/TcpUpgradeVerificator.java

Lines changed: 0 additions & 31 deletions
This file was deleted.

0 commit comments

Comments
 (0)