mirror of https://github.com/grpc/grpc-node.git
grpc-js: Make some headers conform to what the other library does
This commit is contained in:
parent
44e927edc3
commit
ae18f3ce92
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@grpc/grpc-js",
|
||||
"version": "0.7.6",
|
||||
"version": "0.7.7",
|
||||
"description": "gRPC Library for Node - pure JS implementation",
|
||||
"homepage": "https://grpc.io/",
|
||||
"repository": "https://github.com/grpc/grpc-node/tree/master/packages/grpc-js",
|
||||
|
|
|
@ -353,7 +353,11 @@ export class Http2CallStream implements Call {
|
|||
}
|
||||
|
||||
private handleTrailers(headers: http2.IncomingHttpHeaders) {
|
||||
this.trace('received HTTP/2 trailing headers frame');
|
||||
let headersString = '';
|
||||
for (const header of Object.keys(headers)) {
|
||||
headersString += '\t\t' + header + ': ' + headers[header] + '\n'
|
||||
}
|
||||
this.trace('Received server trailers:\n' + headersString);
|
||||
let metadata: Metadata;
|
||||
try {
|
||||
metadata = Metadata.fromHttp2Headers(headers);
|
||||
|
@ -366,6 +370,7 @@ export class Http2CallStream implements Call {
|
|||
const receivedStatus = Number(metadataMap['grpc-status']);
|
||||
if (receivedStatus in Status) {
|
||||
code = receivedStatus;
|
||||
this.trace('received status code ' + receivedStatus + ' from server');
|
||||
}
|
||||
metadata.remove('grpc-status');
|
||||
}
|
||||
|
@ -373,6 +378,7 @@ export class Http2CallStream implements Call {
|
|||
if (typeof metadataMap['grpc-message'] === 'string') {
|
||||
details = decodeURI(metadataMap['grpc-message']);
|
||||
metadata.remove('grpc-message');
|
||||
this.trace('received status details string "' + details + '" from server');
|
||||
}
|
||||
const status: StatusObject = { code, details, metadata };
|
||||
let finalStatus;
|
||||
|
@ -407,7 +413,11 @@ export class Http2CallStream implements Call {
|
|||
subchannel.addDisconnectListener(this.disconnectListener);
|
||||
subchannel.callRef();
|
||||
stream.on('response', (headers, flags) => {
|
||||
this.trace('received HTTP/2 headers frame');
|
||||
let headersString = '';
|
||||
for (const header of Object.keys(headers)) {
|
||||
headersString += '\t\t' + header + ': ' + headers[header] + '\n'
|
||||
}
|
||||
this.trace('Received server headers:\n' + headersString);
|
||||
switch (headers[':status']) {
|
||||
// TODO(murgatroid99): handle 100 and 101
|
||||
case 400:
|
||||
|
@ -568,6 +578,7 @@ export class Http2CallStream implements Call {
|
|||
}
|
||||
|
||||
cancelWithStatus(status: Status, details: string): void {
|
||||
this.trace('cancelWithStatus code: ' + status + ' details: "' + details + '"');
|
||||
this.destroyHttp2Stream();
|
||||
this.endCall({ code: status, details, metadata: new Metadata() });
|
||||
}
|
||||
|
|
|
@ -169,8 +169,8 @@ export class CompressionFilter extends BaseFilter implements Filter {
|
|||
private receiveCompression: CompressionHandler = new IdentityHandler();
|
||||
async sendMetadata(metadata: Promise<Metadata>): Promise<Metadata> {
|
||||
const headers: Metadata = await metadata;
|
||||
headers.set('grpc-encoding', 'identity');
|
||||
headers.set('grpc-accept-encoding', 'identity,deflate,gzip');
|
||||
headers.set('accept-encoding', 'identity,gzip');
|
||||
return headers;
|
||||
}
|
||||
|
||||
|
|
|
@ -298,10 +298,16 @@ class DnsResolver implements Resolver {
|
|||
IPV6_REGEX.exec(target) ||
|
||||
IPV6_BRACKET_REGEX.exec(target);
|
||||
if (ipMatch) {
|
||||
if (ipMatch[2]) {
|
||||
return ipMatch[1] + ':' + ipMatch[2];
|
||||
}
|
||||
return ipMatch[1];
|
||||
}
|
||||
const dnsMatch = DNS_REGEX.exec(target);
|
||||
if (dnsMatch) {
|
||||
if (dnsMatch[2]) {
|
||||
return dnsMatch[1] + ':' + dnsMatch[2];
|
||||
}
|
||||
return dnsMatch[1];
|
||||
}
|
||||
throw new Error(`Failed to parse target ${target}`);
|
||||
|
|
|
@ -298,8 +298,6 @@ export class Subchannel {
|
|||
return checkServerIdentity(sslTargetNameOverride, cert);
|
||||
};
|
||||
connectionOptions.servername = sslTargetNameOverride;
|
||||
} else {
|
||||
connectionOptions.servername = getDefaultAuthority(this.channelTarget);
|
||||
}
|
||||
if (socket) {
|
||||
connectionOptions.socket = socket;
|
||||
|
@ -589,6 +587,11 @@ export class Subchannel {
|
|||
headers[HTTP2_HEADER_PATH] = callStream.getMethod();
|
||||
headers[HTTP2_HEADER_TE] = 'trailers';
|
||||
const http2Stream = this.session!.request(headers);
|
||||
let headersString = '';
|
||||
for (const header of Object.keys(headers)) {
|
||||
headersString += '\t\t' + header + ': ' + headers[header] + '\n'
|
||||
}
|
||||
trace('Starting stream with headers\n' + headersString);
|
||||
callStream.attachHttp2Stream(http2Stream, this);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue