Skip to content
Permalink
Browse files
deps: update to ngtcp2 0.8.1 and nghttp3 0.7.0
Refs: #44619
Co-authored-by: James M Snell <jasnell@gmail.com>
PR-URL: #44622
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
  • Loading branch information
2 people authored and RafaelGSS committed Sep 26, 2022
1 parent 4436ffb commit ca5fb67b4ecc145578fc84e964253b10ff41070a
Show file tree
Hide file tree
Showing 121 changed files with 19,242 additions and 7,107 deletions.

Large diffs are not rendered by default.

@@ -31,7 +31,7 @@
*
* Version number of the nghttp3 library release.
*/
#define NGHTTP3_VERSION "0.1.0-DEV"
#define NGHTTP3_VERSION "0.7.0"

/**
* @macro
@@ -41,6 +41,6 @@
* number, 8 bits for minor and 8 bits for patch. Version 1.2.3
* becomes 0x010203.
*/
#define NGHTTP3_VERSION_NUM 0x000100
#define NGHTTP3_VERSION_NUM 0x000700

#endif /* NGHTTP3_VERSION_H */
@@ -0,0 +1,91 @@
/*
* nghttp3
*
* Copyright (c) 2022 nghttp3 contributors
* Copyright (c) 2022 ngtcp2 contributors
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#include "nghttp3_balloc.h"

#include <assert.h>

#include "nghttp3_mem.h"

void nghttp3_balloc_init(nghttp3_balloc *balloc, size_t blklen,
const nghttp3_mem *mem) {
assert((blklen & 0xfu) == 0);

balloc->mem = mem;
balloc->blklen = blklen;
balloc->head = NULL;
nghttp3_buf_wrap_init(&balloc->buf, (void *)"", 0);
}

void nghttp3_balloc_free(nghttp3_balloc *balloc) {
if (balloc == NULL) {
return;
}

nghttp3_balloc_clear(balloc);
}

void nghttp3_balloc_clear(nghttp3_balloc *balloc) {
nghttp3_memblock_hd *p, *next;

for (p = balloc->head; p; p = next) {
next = p->next;
nghttp3_mem_free(balloc->mem, p);
}

balloc->head = NULL;
nghttp3_buf_wrap_init(&balloc->buf, (void *)"", 0);
}

int nghttp3_balloc_get(nghttp3_balloc *balloc, void **pbuf, size_t n) {
uint8_t *p;
nghttp3_memblock_hd *hd;

assert(n <= balloc->blklen);

if (nghttp3_buf_left(&balloc->buf) < n) {
p = nghttp3_mem_malloc(balloc->mem, sizeof(nghttp3_memblock_hd) + 0x10u +
balloc->blklen);
if (p == NULL) {
return NGHTTP3_ERR_NOMEM;
}

hd = (nghttp3_memblock_hd *)(void *)p;
hd->next = balloc->head;
balloc->head = hd;
nghttp3_buf_wrap_init(
&balloc->buf,
(uint8_t *)(((uintptr_t)p + sizeof(nghttp3_memblock_hd) + 0xfu) &
~(uintptr_t)0xfu),
balloc->blklen);
}

assert(((uintptr_t)balloc->buf.last & 0xfu) == 0);

*pbuf = balloc->buf.last;
balloc->buf.last += (n + 0xfu) & ~(uintptr_t)0xfu;

return 0;
}
@@ -0,0 +1,92 @@
/*
* nghttp3
*
* Copyright (c) 2022 nghttp3 contributors
* Copyright (c) 2022 ngtcp2 contributors
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#ifndef NGHTTP3_BALLOC_H
#define NGHTTP3_BALLOC_H

#ifdef HAVE_CONFIG_H
# include <config.h>
#endif /* HAVE_CONFIG_H */

#include <nghttp3/nghttp3.h>

#include "nghttp3_buf.h"

typedef struct nghttp3_memblock_hd nghttp3_memblock_hd;

/*
* nghttp3_memblock_hd is the header of memory block.
*/
struct nghttp3_memblock_hd {
nghttp3_memblock_hd *next;
};

/*
* nghttp3_balloc is a custom memory allocator. It allocates |blklen|
* bytes of memory at once on demand, and returns its slice when the
* allocation is requested.
*/
typedef struct nghttp3_balloc {
/* mem is the underlying memory allocator. */
const nghttp3_mem *mem;
/* blklen is the size of memory block. */
size_t blklen;
/* head points to the list of memory block allocated so far. */
nghttp3_memblock_hd *head;
/* buf wraps the current memory block for allocation requests. */
nghttp3_buf buf;
} nghttp3_balloc;

/*
* nghttp3_balloc_init initializes |balloc| with |blklen| which is the
* size of memory block.
*/
void nghttp3_balloc_init(nghttp3_balloc *balloc, size_t blklen,
const nghttp3_mem *mem);

/*
* nghttp3_balloc_free releases all allocated memory blocks.
*/
void nghttp3_balloc_free(nghttp3_balloc *balloc);

/*
* nghttp3_balloc_get allocates |n| bytes of memory and assigns its
* pointer to |*pbuf|.
*
* It returns 0 if it succeeds, or one of the following negative error
* codes:
*
* NGHTTP3_ERR_NOMEM
* Out of memory.
*/
int nghttp3_balloc_get(nghttp3_balloc *balloc, void **pbuf, size_t n);

/*
* nghttp3_balloc_clear releases all allocated memory blocks and
* initializes its state.
*/
void nghttp3_balloc_clear(nghttp3_balloc *balloc);

#endif /* NGHTTP3_BALLOC_H */

0 comments on commit ca5fb67

Please sign in to comment.