From 24daa5813f277023f7b8453338870369bf00a3ca Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Sat, 4 Jul 2026 04:03:12 +0000 Subject: Implement FastCGI, initial version --- src/libtipidee/tipidee_fcgi_addenv.c | 41 ++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/libtipidee/tipidee_fcgi_addenv.c (limited to 'src/libtipidee/tipidee_fcgi_addenv.c') diff --git a/src/libtipidee/tipidee_fcgi_addenv.c b/src/libtipidee/tipidee_fcgi_addenv.c new file mode 100644 index 0000000..fb9e859 --- /dev/null +++ b/src/libtipidee/tipidee_fcgi_addenv.c @@ -0,0 +1,41 @@ +/* ISC license. */ + +#include + +#include +#include + +#include + +static int encode (stralloc *sa, size_t n) +{ + if (n <= 0x7f) + { + char c = n ; + return stralloc_catb(sa, &c, 1) ; + } + else if (n < 0x7ffffffful) + { + char pack[4] ; + uint32_pack_big(pack, n | 0x80000000) ; + return stralloc_catb(sa, pack, 4) ; + } + else return (errno = EOVERFLOW, 0) ; +} + +int tipidee_fcgi_addenvb (stralloc *sa, char const *key, size_t keylen, char const *val, size_t vallen) +{ + size_t start = sa->len ; + if (!encode(sa, keylen)) return 0 ; + if (!encode(sa, vallen) + || !stralloc_catb(sa, key, keylen) + || !stralloc_catb(sa, val, vallen)) goto err ; + if (sa->len > 0x7fff) goto err0 ; + return 1 ; + + err0: + errno = E2BIG ; + err: + sa->len = start ; + return 0 ; +} -- cgit v1.3.1