mirror of
https://github.com/avwo/whistle.git
synced 2026-10-28 14:07:30 +08:00
feat: add trailers
This commit is contained in:
+4
-1
@@ -219,6 +219,9 @@ function requestH2(client, req, res, callback) {
|
||||
var newHeaders = {};
|
||||
var statusCode = h2Headers[':status'];
|
||||
var svrRes = h2Session;
|
||||
svrRes.on('trailers', function(trailers) {
|
||||
svrRes.trailers = trailers;
|
||||
});
|
||||
svrRes.statusCode = statusCode;
|
||||
// HTTP2 对响应内容格式要求太严格(NGHTTP2_PROTOCOL_ERROR)
|
||||
if (!util.hasBody(svrRes, req)) {
|
||||
@@ -230,7 +233,7 @@ function requestH2(client, req, res, callback) {
|
||||
svrRes.httpVersion = '1.1';
|
||||
svrRes.headers = newHeaders;
|
||||
Object.keys(h2Headers).forEach(function(name) {
|
||||
if (name[0] !== ':') {
|
||||
if (name[0] !== ':' && name !== 'content-length') {
|
||||
newHeaders[name] = h2Headers[name];
|
||||
}
|
||||
});
|
||||
|
||||
@@ -781,6 +781,15 @@ function toHttp1(req, res) {
|
||||
client.on('error', handleError);
|
||||
client.on('response', function(svrRes) {
|
||||
svrRes.on('error', handleError);
|
||||
svrRes.once('end', function() {
|
||||
var trailers = svrRes.trailers;
|
||||
if (!util.isEmptyObject(trailers)) {
|
||||
var rawHeaderNames = svrRes.rawTrailers ? getRawHeaderNames(svrRes.rawTrailers) : null;
|
||||
try {
|
||||
res.addTrailers(formatHeaders(trailers, rawHeaderNames));
|
||||
} catch (e) {}
|
||||
}
|
||||
});
|
||||
try {
|
||||
var code = svrRes.statusCode;
|
||||
res.writeHead(code, getStatusMessage(svrRes), formatRawHeaders(svrRes, isH2));
|
||||
|
||||
Reference in New Issue
Block a user