In backend/open_webui/retrieval/web/yandex.py, the xml_element_contents_to_string() helper receives element: Element but is called with the result of group.find('doc/url'), group.find('doc/title'), or group.find('doc/passages/passage'), any of which may return None when the corresponding XML node is absent.
When element is None, accessing element.text raises:
AttributeError: 'NoneType' object has no attribute 'text'
This crashes the entire search function, which then silently returns [], so users see "No results found" even though the Yandex API returned valid results.
Stack trace from the issue:
ERROR | open_webui.retrieval.web.yandex:search_yandex:117 - Error in search: 'NoneType' object has no attribute 'text'
ERROR | open_webui.utils.middleware:chat_web_search_handler:1651 - 404: [ERROR: No results found from web search]
The function already handles the case of element.text being None (using ''), so this change is consistent with the existing pattern.
Impact
Search now returns partial results instead of crashing when individual XML nodes are missing
No behavior change for well-formed Yandex API responses
The search_yandex function already has try/except and returns [] on error, so this is a defensive improvement
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
## 📋 Pull Request Information
**Original PR:** https://github.com/open-webui/open-webui/pull/24257
**Author:** [@PHclaw](https://github.com/PHclaw)
**Created:** 4/30/2026
**Status:** ❌ Closed
**Base:** `dev` ← **Head:** `fix/yandex-xml-none-check`
---
### 📝 Commits (10+)
- [`fe6783c`](https://github.com/open-webui/open-webui/commit/fe6783c16699911c7be17392596d579333fb110c) Merge pull request #19030 from open-webui/dev
- [`fc05e0a`](https://github.com/open-webui/open-webui/commit/fc05e0a6c5d39da60b603b4d520f800d6e36f748) Merge pull request #19405 from open-webui/dev
- [`e3faec6`](https://github.com/open-webui/open-webui/commit/e3faec62c58e3a83d89aa3df539feacefa125e0c) Merge pull request #19416 from open-webui/dev
- [`9899293`](https://github.com/open-webui/open-webui/commit/9899293f050ad50ae12024cbebee7e018acd851e) Merge pull request #19448 from open-webui/dev
- [`140605e`](https://github.com/open-webui/open-webui/commit/140605e660b8186a7d5c79fb3be6ffb147a2f498) Merge pull request #19462 from open-webui/dev
- [`6f1486f`](https://github.com/open-webui/open-webui/commit/6f1486ffd0cb288d0e21f41845361924e0d742b3) Merge pull request #19466 from open-webui/dev
- [`d95f533`](https://github.com/open-webui/open-webui/commit/d95f533214e3fe5beb5e41ec1f349940bc4c7043) Merge pull request #19729 from open-webui/dev
- [`a727153`](https://github.com/open-webui/open-webui/commit/a7271532f8a38da46785afcaa7e65f9a45e7d753) 0.6.43 (#20093)
- [`6adde20`](https://github.com/open-webui/open-webui/commit/6adde203cd292a9e3af9c64a2ae36b603fed096a) Merge pull request #20394 from open-webui/dev
- [`f9b0534`](https://github.com/open-webui/open-webui/commit/f9b0534e0c442631d1cb7205169588b9b6204179) Merge pull request #20522 from open-webui/dev
### 📊 Changes
**1 file changed** (+3 additions, -1 deletions)
<details>
<summary>View changed files</summary>
📝 `backend/open_webui/retrieval/web/yandex.py` (+3 -1)
</details>
### 📄 Description
## Summary
Fixes #24243
## Bug
In `backend/open_webui/retrieval/web/yandex.py`, the `xml_element_contents_to_string()` helper receives `element: Element` but is called with the result of `group.find('doc/url')`, `group.find('doc/title')`, or `group.find('doc/passages/passage')`, any of which may return `None` when the corresponding XML node is absent.
When `element is None`, accessing `element.text` raises:
```
AttributeError: 'NoneType' object has no attribute 'text'
```
This crashes the entire search function, which then silently returns `[]`, so users see "No results found" even though the Yandex API returned valid results.
Stack trace from the issue:
```
ERROR | open_webui.retrieval.web.yandex:search_yandex:117 - Error in search: 'NoneType' object has no attribute 'text'
ERROR | open_webui.utils.middleware:chat_web_search_handler:1651 - 404: [ERROR: No results found from web search]
```
## Fix
Guard against `None` at the top of the helper:
```python
def xml_element_contents_to_string(element: Element | None) -> str:
if element is None:
return ''
buffer = [element.text if element.text else '']
...
```
The function already handles the case of `element.text` being `None` (using `''`), so this change is consistent with the existing pattern.
## Impact
- Search now returns partial results instead of crashing when individual XML nodes are missing
- No behavior change for well-formed Yandex API responses
- The `search_yandex` function already has `try/except` and returns `[]` on error, so this is a defensive improvement
---
<sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
📋 Pull Request Information
Original PR: https://github.com/open-webui/open-webui/pull/24257
Author: @PHclaw
Created: 4/30/2026
Status: ❌ Closed
Base:
dev← Head:fix/yandex-xml-none-check📝 Commits (10+)
fe6783cMerge pull request #19030 from open-webui/devfc05e0aMerge pull request #19405 from open-webui/deve3faec6Merge pull request #19416 from open-webui/dev9899293Merge pull request #19448 from open-webui/dev140605eMerge pull request #19462 from open-webui/dev6f1486fMerge pull request #19466 from open-webui/devd95f533Merge pull request #19729 from open-webui/deva7271530.6.43 (#20093)6adde20Merge pull request #20394 from open-webui/devf9b0534Merge pull request #20522 from open-webui/dev📊 Changes
1 file changed (+3 additions, -1 deletions)
View changed files
📝
backend/open_webui/retrieval/web/yandex.py(+3 -1)📄 Description
Summary
Fixes #24243
Bug
In
backend/open_webui/retrieval/web/yandex.py, thexml_element_contents_to_string()helper receiveselement: Elementbut is called with the result ofgroup.find('doc/url'),group.find('doc/title'), orgroup.find('doc/passages/passage'), any of which may returnNonewhen the corresponding XML node is absent.When
element is None, accessingelement.textraises:This crashes the entire search function, which then silently returns
[], so users see "No results found" even though the Yandex API returned valid results.Stack trace from the issue:
Fix
Guard against
Noneat the top of the helper:The function already handles the case of
element.textbeingNone(using''), so this change is consistent with the existing pattern.Impact
search_yandexfunction already hastry/exceptand returns[]on error, so this is a defensive improvement🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.