From 56bb199ef0eca5f1264956853a21265fb451f0e4 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Sat, 12 Aug 2017 17:34:30 +0200 Subject: [PATCH] deps: cherry-pick eb306f463e from nghttp2 upstream Original commit message: lib: add nghttp2_rcbuf_is_static() Add a `nghttp2_rcbuf_is_static()` method to tell whether a rcbuf is statically allocated. This can be useful for language bindings that wish to avoid creating duplicate strings for these buffers; concretely, I am planning to use this in the Node HTTP/2 module that is being introduced. Ref: https://github.com/nghttp2/nghttp2/commit/eb306f463efea645de611de2bff0a8f823deb048 PR-URL: https://github.com/nodejs/node/pull/14808 Reviewed-By: James M Snell Reviewed-By: Matteo Collina Reviewed-By: Timothy Gu --- deps/nghttp2/lib/includes/nghttp2/nghttp2.h | 9 +++++++++ deps/nghttp2/lib/nghttp2_rcbuf.c | 4 ++++ 2 files changed, 13 insertions(+) diff --git a/deps/nghttp2/lib/includes/nghttp2/nghttp2.h b/deps/nghttp2/lib/includes/nghttp2/nghttp2.h index 159010040c798c..848ef066be4405 100644 --- a/deps/nghttp2/lib/includes/nghttp2/nghttp2.h +++ b/deps/nghttp2/lib/includes/nghttp2/nghttp2.h @@ -469,6 +469,15 @@ NGHTTP2_EXTERN void nghttp2_rcbuf_decref(nghttp2_rcbuf *rcbuf); */ NGHTTP2_EXTERN nghttp2_vec nghttp2_rcbuf_get_buf(nghttp2_rcbuf *rcbuf); +/** + * @function + * + * Returns 1 if the underlying buffer is statically allocated, + * and 0 otherwise. This can be useful for language bindings that wish to avoid + * creating duplicate strings for these buffers. + */ +NGHTTP2_EXTERN int nghttp2_rcbuf_is_static(const nghttp2_rcbuf *rcbuf); + /** * @enum * diff --git a/deps/nghttp2/lib/nghttp2_rcbuf.c b/deps/nghttp2/lib/nghttp2_rcbuf.c index 24f561af97af7c..7e7814d2d3caac 100644 --- a/deps/nghttp2/lib/nghttp2_rcbuf.c +++ b/deps/nghttp2/lib/nghttp2_rcbuf.c @@ -96,3 +96,7 @@ nghttp2_vec nghttp2_rcbuf_get_buf(nghttp2_rcbuf *rcbuf) { nghttp2_vec res = {rcbuf->base, rcbuf->len}; return res; } + +int nghttp2_rcbuf_is_static(const nghttp2_rcbuf *rcbuf) { + return rcbuf->ref == -1; +}