MCPcopy Index your code
hub / github.com/nodejs/node / writeH2

Function writeH2

deps/undici/undici.js:8919–9112  ·  view source on GitHub ↗
(client, request)

Source from the content-addressed store, hash-verified

8917 }
8918 __name(setupUpgradeStream, "setupUpgradeStream");
8919 function writeH2(client, request) {
8920 const headersTimeout = request.headersTimeout ?? client[kHeadersTimeout];
8921 const bodyTimeout = request.bodyTimeout ?? client[kBodyTimeout];
8922 const session = client[kHTTP2Session];
8923 const { method, path, host, upgrade, expectContinue, signal, protocol, headers: reqHeaders } = request;
8924 let { body } = request;
8925 if (upgrade != null && upgrade !== "websocket") {
8926 util.errorRequest(client, request, new InvalidArgumentError(`Custom upgrade "${upgrade}" not supported over HTTP/2`));
8927 return false;
8928 }
8929 const headers = buildRequestHeaders(reqHeaders);
8930 let stream = null;
8931 headers[HTTP2_HEADER_AUTHORITY] = host || client[kHostAuthority];
8932 headers[HTTP2_HEADER_METHOD] = method;
8933 let requestFinalized = false;
8934 const finalizeRequest = /* @__PURE__ */ __name((resetPendingIdx = false) => {
8935 if (requestFinalized) {
8936 return;
8937 }
8938 requestFinalized = true;
8939 completeRequest(client, request, resetPendingIdx);
8940 client[kResume]();
8941 }, "finalizeRequest");
8942 const abort = /* @__PURE__ */ __name((err, resetPendingIdx = false) => {
8943 if (request.aborted || request.completed) {
8944 return;
8945 }
8946 err = err || new RequestAbortedError();
8947 util.errorRequest(client, request, err);
8948 if (stream != null) {
8949 clearRequestStream(request);
8950 stream.close();
8951 client[kOnError](err);
8952 finalizeRequest(resetPendingIdx);
8953 }
8954 util.destroy(body, err);
8955 }, "abort");
8956 const requestStream = /* @__PURE__ */ __name((headers2, options) => {
8957 try {
8958 return session.request(headers2, options);
8959 } catch (err) {
8960 if (err?.code === "ERR_HTTP2_INVALID_SESSION") {
8961 const wrappedErr2 = new SocketError(err.message, util.getSocketInfo(session[kSocket]));
8962 wrappedErr2.cause = err;
8963 session[kError] = wrappedErr2;
8964 resetHttp2Session(session, wrappedErr2);
8965 requeueUnsentRequest(client, request);
8966 return null;
8967 }
8968 const wrappedErr = new InformationalError(err.message, { cause: err });
8969 session[kError] = wrappedErr;
8970 session[kSocket][kError] = wrappedErr;
8971 session.destroy(wrappedErr);
8972 util.destroy(session[kSocket], wrappedErr);
8973 abort(wrappedErr);
8974 return null;
8975 }
8976 }, "requestStream");

Callers 1

writeFunction · 0.70

Calls 15

__nameFunction · 0.85
finalizeRequestFunction · 0.85
requestStreamFunction · 0.85
buildRequestHeadersFunction · 0.70
completeRequestFunction · 0.70
clearRequestStreamFunction · 0.70
resetHttp2SessionFunction · 0.70
requeueUnsentRequestFunction · 0.70
abortFunction · 0.70
setupUpgradeStreamFunction · 0.70
extractBodyFunction · 0.70
shouldSendContentLengthFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…