Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

[azure-core] _aiohttp_body_helper does not decompress Content-Encoding: br (Brotli)

Abierto Apto para principiantes
#47,186 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
76/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Tranquilo
Stack tecnológico
python
Área
backend

Línea de trabajo

Comienza en azure/core/utils/_pipeline_transport_rest_shared.py, en _aiohttp_body_helper, y compara el manejo existente de gzip y deflate con la ruta br indicada. Comprueba cómo se declara la disponibilidad de Brotli y verifica después que una respuesta codificada con Brotli se descomprime antes de que se ejecute response.text() y ya no produzca UnicodeDecodeError.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Azure.Core customer-reported feature-request needs-team-attention
Bug Report

Package: azure-core 1.41.0 (also affects azure-ai-agentserver-responses 1.0.0b7)

Description

_aiohttp_body_helper in azure.core.utils._pipeline_transport_rest_shared handles Content-Encoding: gzip and Content-Encoding: deflate, but does not handle Content-Encoding: br (Brotli). When an upstream service returns a Brotli-compressed response, the raw compressed bytes pass through to response.text(), which then raises UnicodeDecodeError.

Reproduction

This surfaces when using azure-ai-agentserver-responses as a Foundry Hosted Agent. The Foundry storage API (/storage/history/item_ids) returns Content-Encoding: br. The FoundryStorageProvider calls http_resp.text() which triggers the decode error.

The FoundryStorageProvider intentionally excludes ContentDecodePolicy from its pipeline (with a comment noting gzip crashes), so there is no other layer handling decompression.

Root Cause

In azure/core/utils/_pipeline_transport_rest_shared.py:

def _aiohttp_body_helper(response):
    ...
    enc = response.headers.get("Content-Encoding")
    if enc in ("gzip", "deflate"):   # <- "br" not handled
        ...
    return response._content  # raw Brotli bytes pass through
Expected Behavior

Brotli responses should be decompressed transparently, matching how gzip/deflate are handled.

Suggested Fix
if enc in ("gzip", "deflate"):
    ...
elif enc == "br":
    import brotli
    response._content = brotli.decompress(response._content)
    response._decompressed_content = True
    return response._content

(The brotli package is already a common transitive dependency via aiohttp[speedups].)

Workaround

We monkey-patch _aiohttp_body_helper at import time to add Brotli support.

Environment
  • Python 3.11
  • azure-core==1.41.0
  • azure-ai-agentserver-responses==1.0.0b7
  • Platform: Azure AI Foundry Hosted Agent (Linux container)
Lenguaje dominante
Python
Estrellas
5.6k
Forks
3.4k
Merge medio
1 d 18 h
PR fusionados (30 d)
202

Preparar el entorno

Abrir en Codespaces

Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de Azure/azure-sdk-for-python

Todos los issues de Azure/azure-sdk-for-python

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.