Skip to content

Commit f09c573

Browse files
committed
Fix a bug that was not respecting Trailer send mode before sending to ext-proc for trailers-only received from dataplane server.
1 parent c8c699a commit f09c573

2 files changed

Lines changed: 435 additions & 413 deletions

File tree

xds/src/main/java/io/grpc/xds/ExternalProcessorClientInterceptor.java

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1364,23 +1364,28 @@ private void triggerCloseHandshake() {
13641364
return;
13651365
}
13661366

1367-
if (trailersOnly.get()) {
1368-
dataPlaneClientCall.sendToExtProc(ProcessingRequest.newBuilder()
1369-
.setResponseHeaders(HttpHeaders.newBuilder()
1370-
.setHeaders(
1371-
toHeaderMap(
1372-
savedTrailers,
1373-
dataPlaneClientCall.config.getForwardRulesConfig()))
1374-
.setEndOfStream(true)
1375-
.build())
1376-
.build());
1377-
return;
1378-
}
1379-
13801367
boolean sendResponseTrailers =
13811368
dataPlaneClientCall.currentProcessingMode.getResponseTrailerMode()
13821369
== ProcessingMode.HeaderSendMode.SEND;
13831370

1371+
if (trailersOnly.get()) {
1372+
if (sendResponseTrailers) {
1373+
dataPlaneClientCall.sendToExtProc(ProcessingRequest.newBuilder()
1374+
.setResponseHeaders(HttpHeaders.newBuilder()
1375+
.setHeaders(
1376+
toHeaderMap(
1377+
savedTrailers,
1378+
dataPlaneClientCall.config.getForwardRulesConfig()))
1379+
.setEndOfStream(true)
1380+
.build())
1381+
.build());
1382+
} else {
1383+
proceedWithClose();
1384+
dataPlaneClientCall.closeExtProcStream();
1385+
}
1386+
return;
1387+
}
1388+
13841389
if (sendResponseTrailers) {
13851390
dataPlaneClientCall.isProcessingTrailers.set(true);
13861391
dataPlaneClientCall.sendToExtProc(ProcessingRequest.newBuilder()

0 commit comments

Comments
 (0)