httpbody

package
v1.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 10, 2026 License: Apache-2.0 Imports: 1 Imported by: 0

Documentation

Overview

Package httpbody — ЕДИНСТВЕННАЯ в дереве реализация потолка тела запроса.

Почему одна, а не по месту

Потолок состоит из ДВУХ слоёв, и второй забывают. Реализация, поставившая только ограничитель чтения, выглядит исполненной и пропускает запрос, объявивший гигантскую длину: отказ приходит после того, как тело прочитано, — то есть ровно тогда, когда экономить уже нечего. Пока реализаций несколько, различие между ними НЕ ВЫРАЖЕНО и потому не может покраснеть; первая же правка одной из них не доедет до остальных, и не доедет молча.

Замер, из-за которого пакет заведён: до него реализаций в дереве было ТРИ, и объявленную длину проверяла ОДНА.

Два слоя и почему нужны оба

  1. **объявленная длина сверх потолка** — отказ немедленный, ни одного байта тела не прочитано;
  2. **ограничитель чтения** — клиент вправе длину не объявлять (потоковая передача), и тогда единственное, что делает тело конечным, — обрыв чтения на потолке.

Первый слой без второго не ограничивает ничего: длину объявляет клиент. Второй без первого ограничивает память, но платит чтением.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Cap

func Cap(w http.ResponseWriter, r *http.Request, limit int64) bool

Cap ограничивает тело запроса потолком и отвечает, обязан ли вызывающий отказать НЕМЕДЛЕННО.

`true` означает: клиент объявил длину сверх потолка, тело не читалось, и вызывающий обязан отказать своей формой ответа. Форма отказа НЕ навязывается здесь намеренно — она разная у края, у вебхуков и у токен-эндпоинта, и сведение её к одной сломало бы чужие контракты ради опрятности.

`false` означает: тело обёрнуто ограничителем. Попытка прочитать больше потолка вернёт `*http.MaxBytesError`, и вызывающий вправе отличить её от прочих ошибок разбора.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL