mirror of
https://github.com/open-webui/open-webui.git
synced 2026-01-03 15:15:19 +00:00
fix: prevent crash when invalid OpenAPI spec is loaded for tool servers (#20257)
* enh * fix
This commit is contained in:
parent
935808f5ea
commit
697e94e935
2 changed files with 20 additions and 8 deletions
|
|
@ -379,6 +379,13 @@ export const getToolServersData = async (servers: object[]) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (res) {
|
if (res) {
|
||||||
|
if (!res.paths) {
|
||||||
|
return {
|
||||||
|
error: 'Invalid OpenAPI spec',
|
||||||
|
url: server?.url
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
const { openapi, info, specs } = {
|
const { openapi, info, specs } = {
|
||||||
openapi: res,
|
openapi: res,
|
||||||
info: res.info,
|
info: res.info,
|
||||||
|
|
|
||||||
|
|
@ -1249,6 +1249,11 @@ function resolveSchema(schemaRef, components, resolvedSchemas = new Set()) {
|
||||||
export const convertOpenApiToToolPayload = (openApiSpec) => {
|
export const convertOpenApiToToolPayload = (openApiSpec) => {
|
||||||
const toolPayload = [];
|
const toolPayload = [];
|
||||||
|
|
||||||
|
// Guard against invalid or non-OpenAPI specs (e.g., MCP-style configs)
|
||||||
|
if (!openApiSpec || !openApiSpec.paths) {
|
||||||
|
return toolPayload;
|
||||||
|
}
|
||||||
|
|
||||||
for (const [path, methods] of Object.entries(openApiSpec.paths)) {
|
for (const [path, methods] of Object.entries(openApiSpec.paths)) {
|
||||||
for (const [method, operation] of Object.entries(methods)) {
|
for (const [method, operation] of Object.entries(methods)) {
|
||||||
if (operation?.operationId) {
|
if (operation?.operationId) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue