Skip to content

AgentProxy 1.6

Latest

Choose a tag to compare

@aokazantsev aokazantsev released this 27 Oct 07:28
· 5 commits to main since this release
  • Новое действие правила cut (add_rule, update_rule): ответ идёт от сервера, а прокси обрывает его посреди тела, когда приложению ушло after_bytes байт тела или after_percent (1–99) от Content-Length. HTTP/1.1 — соединение закрывается без конца тела, HTTP/2 — сбрасывается только этот поток: приложение видит обрыв сети посреди загрузки, а не короткий ответ. Нужно ровно одно из двух полей; download_kbps и delay_ms работают как у остальных действий, и download_kbps в том же правиле даёт обрыв посреди медленной загрузки. times у cut считает оборванные ответы, а не запросы: HEAD и другие не оборванные ответы правило не тратят, поэтому cut с times: 1 рвёт первый ответ, дошедший до точки, а повтор или докачка с Range проходят целиком. Оборванным может оказаться и не тот запрос — проба, побочный Range медиаплеера или запрос, брошенный самим приложением (прокси успевает отдать ему больше, чем оно прочитало): после первой попытки сверить по list_flows с rule, какой запрос получил cut_after_bytes, и при промахе поменять точку через update_rule с reset_hits. Без times ответ add_rule предупреждает, что оборвётся и каждый повтор.
  • У оборванного запроса в истории rules несёт cut_after_bytes, а error записи — «AgentProxy rule … cut the response after N bytes of body», тело — дошедшая часть. Не оборванный ответ получает skipped с причиной: ответ правила respond/sse, ответ без тела, тело не длиннее точки обрыва, тело под правкой rewrite, SSE (его рвёт events с close), after_percent без Content-Length, ответ без длины клиенту HTTP/1.0, ответ, оборванный раньше точки клиентом или сервером, обрыв раньше другим правилом cut, правило исчерпано другими ответами, выключено или удалено раньше, чем ответ дошёл до точки обрыва. Ответ без длины клиенту HTTP/1.1 прокси отдаёт chunked и закрывает соединение после него: иначе закрытие соединения было бы обычным концом такого ответа.
  • Скилл agentproxy, rules.md: раздел «Обрыв cut», строки про обрыв на медленной загрузке («Скорость») и про докачку после обрыва («Порядок и сценарии»).