Skip to content

Commit 5fc530e

Browse files
committed
Fix Parsing Bug in _update_extension_header method
1 parent fd5986a commit 5fc530e

File tree

2 files changed

+28
-18
lines changed

2 files changed

+28
-18
lines changed

src/a2a/client/transports/jsonrpc.py

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -86,15 +86,20 @@ def __init__(
8686
def _update_extension_header(
8787
self, http_kwargs: dict[str, Any]
8888
) -> dict[str, Any]:
89-
if self.client_extensions:
90-
headers = http_kwargs.get('headers', {})
91-
existing_extensions = headers.get(HTTP_EXTENSION_HEADER, '')
92-
split = (
93-
existing_extensions.split(', ') if existing_extensions else []
94-
)
95-
updated_extensions = list(set(self.client_extensions + split))
96-
headers[HTTP_EXTENSION_HEADER] = ', '.join(updated_extensions)
97-
http_kwargs['headers'] = headers
89+
if not self.client_extensions:
90+
return http_kwargs
91+
92+
headers = http_kwargs.setdefault('headers', {})
93+
existing_extensions_str = headers.get(HTTP_EXTENSION_HEADER, '')
94+
95+
existing_extensions = [
96+
e.strip() for e in existing_extensions_str.split(',') if e.strip()
97+
]
98+
99+
all_extensions = set(self.client_extensions)
100+
all_extensions.update(existing_extensions)
101+
102+
headers[HTTP_EXTENSION_HEADER] = ', '.join(list(all_extensions))
98103
return http_kwargs
99104

100105
async def _apply_interceptors(

src/a2a/client/transports/rest.py

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -68,15 +68,20 @@ def __init__(
6868
def _update_extension_header(
6969
self, http_kwargs: dict[str, Any]
7070
) -> dict[str, Any]:
71-
if self.client_extensions:
72-
headers = http_kwargs.get('headers', {})
73-
existing_extensions = headers.get(HTTP_EXTENSION_HEADER, '')
74-
split = (
75-
existing_extensions.split(', ') if existing_extensions else []
76-
)
77-
updated_extensions = list(set(self.client_extensions + split))
78-
headers[HTTP_EXTENSION_HEADER] = ', '.join(updated_extensions)
79-
http_kwargs['headers'] = headers
71+
if not self.client_extensions:
72+
return http_kwargs
73+
74+
headers = http_kwargs.setdefault('headers', {})
75+
existing_extensions_str = headers.get(HTTP_EXTENSION_HEADER, '')
76+
77+
existing_extensions = [
78+
e.strip() for e in existing_extensions_str.split(',') if e.strip()
79+
]
80+
81+
all_extensions = set(self.client_extensions)
82+
all_extensions.update(existing_extensions)
83+
84+
headers[HTTP_EXTENSION_HEADER] = ', '.join(list(all_extensions))
8085
return http_kwargs
8186

8287
async def _apply_interceptors(

0 commit comments

Comments
 (0)