[Bug]: unable to download podcast episodes - getPodcastFeed Error AxiosError #2493

Closed
opened 2026-04-25 00:07:43 +02:00 by adam · 4 comments
Owner

Originally created by @cmatera on GitHub (Jan 15, 2025).

What happened?

I have scheduled downloads setup for all of my podcasts, I noticed today that these were not downloading. The feed URL's are valid. In addition, I cannot remove the podcast and re-add it via the search UI as I get an error.

What did you expect to happen?

Podcasts to download

Steps to reproduce the issue

  1. setup a chron to download episodes

Audiobookshelf version

2.17.7

How are you running audiobookshelf?

Docker

What OS is your Audiobookshelf server hosted from?

Linux

If the issue is being seen in the UI, what browsers are you seeing the problem on?

None

Logs

2025-01-14 21:00:14.793

WARN

[PodcastManager] runEpisodeCheck 1 failed attempts at checking episodes for "Lone Lobos with Xolo Maridueña and Jacob Bertrand"

2025-01-14 21:00:16.205

ERROR

[podcastUtils] getPodcastFeed Error AxiosError: Call to 64:ff9b::12ef:b75f is blocked. at TLSSocket.<anonymous> (/node_modules/ssrf-req-filter/lib/index.js:38:29) at TLSSocket.emit (node:events:518:28) at GetAddrInfoReqWrap.emitLookup [as callback] (node:net:1443:14) at GetAddrInfoReqWrap.onlookupall [as oncomplete] (node:dns:132:8) { config: { transitional: { silentJSONParsing: true, forcedJSONParsing: true, clarifyTimeoutError: false }, adapter: [Function: httpAdapter], transformRequest: [ [Function: transformRequest] ], transformResponse: [ [Function: transformResponse] ], timeout: 12000, xsrfCookieName: 'XSRF-TOKEN', xsrfHeaderName: 'X-XSRF-TOKEN', maxContentLength: -1, maxBodyLength: -1, env: { FormData: [Function] }, validateStatus: [Function: validateStatus], headers: { Accept: 'application/rss+xml, application/xhtml+xml, application/xml, */*;q=0.8', 'User-Agent': 'audiobookshelf (+https://audiobookshelf.org; like iTMS)' }, url: 'https://feeds.simplecast.com/VQImumnT', method: 'get', responseType: 'arraybuffer', httpAgent: Agent { _events: [Object: null prototype], _eventsCount: 2, _maxListeners: undefined, defaultPort: 443, protocol: 'https:', options: [Object: null prototype], requests: [Object: null prototype] {}, sockets: [Object: null prototype] {}, freeSockets: [Object: null prototype] {}, keepAliveMsecs: 1000, keepAlive: false, maxSockets: Infinity, maxFreeSockets: 256, scheduling: 'lifo', maxTotalSockets: Infinity, totalSocketCount: 0, maxCachedSessions: 100, _sessionCache: [Object], createConnection: [Function (anonymous)], [Symbol(shapeMode)]: false, [Symbol(kCapture)]: false, [Symbol(active)]: true }, httpsAgent: Agent { _events: [Object: null prototype], _eventsCount: 2, _maxListeners: undefined, defaultPort: 443, protocol: 'https:', options: [Object: null prototype], requests: [Object: null prototype] {}, sockets: [Object: null prototype], freeSockets: [Object: null prototype] {}, keepAliveMsecs: 1000, keepAlive: false, maxSockets: Infinity, maxFreeSockets: 256, scheduling: 'lifo', maxTotalSockets: Infinity, totalSocketCount: 1, maxCachedSessions: 100, _sessionCache: [Object], createConnection: [Function (anonymous)], [Symbol(shapeMode)]: false, [Symbol(kCapture)]: false, [Symbol(active)]: true }, data: undefined }, request: <ref *1> Writable { _events: { close: undefined, error: [Function: handleRequestError], prefinish: undefined, finish: undefined, drain: undefined, response: [Function: handleResponse], socket: [Array], timeout: undefined, abort: undefined }, _writableState: WritableState { highWaterMark: 16384, length: 0, corked: 0, onwrite: [Function: bound onwrite], writelen: 0, bufferedIndex: 0, pendingcb: 0, [Symbol(kState)]: 17580812, [Symbol(kBufferedValue)]: null }, _maxListeners: undefined, _options: { maxRedirects: 21, maxBodyLength: 10485760, protocol: 'https:', path: '/VQImumnT', method: 'GET', headers: [Object], agent: [Agent], agents: [Object], auth: undefined, hostname: 'feeds.simplecast.com', port: null, nativeProtocols: [Object], pathname: '/VQImumnT' }, _ended: true, _ending: true, _redirectCount: 0, _redirects: [], _requestBodyLength: 0, _requestBodyBuffers: [], _eventsCount: 3, _onNativeResponse: [Function (anonymous)], _currentRequest: ClientRequest { _events: [Object: null prototype], _eventsCount: 7, _maxListeners: undefined, outputData: [], outputSize: 0, writable: true, destroyed: false, _last: true, chunkedEncoding: false, shouldKeepAlive: false, maxRequestsOnConnectionReached: false, _defaultKeepAlive: true, useChunkedEncodingByDefault: false, sendDate: false, _removedConnection: false, _removedContLen: false, _removedTE: false, strictContentLength: false, _contentLength: 0, _hasBody: true, _trailer: '', finished: true, _headerSent: true, _closed: false, socket: [TLSSocket], _header: 'GET /VQImumnT HTTP/1.1\r\n' + 'Accept: application/rss+xml, application/xhtml+xml, application/xml, */*;q=0.8\r\n' + 'User-Agent: audiobookshelf (+https://audiobookshelf.org; like iTMS)\r\n' + 'Host: feeds.simplecast.com\r\n' + 'Connection: close\r\n' + '\r\n', _keepAliveTimeout: 0, _onPendingData: [Function: nop], agent: [Agent], socketPath: undefined, method: 'GET', maxHeaderSize: undefined, insecureHTTPParser: undefined, joinDuplicateHeaders: undefined, path: '/VQImumnT', _ended: false, res: null, aborted: false, timeoutCb: null, upgradeOrConnect: false, parser: null, maxHeadersCount: null, reusedSocket: false, host: 'feeds.simplecast.com', protocol: 'https:', _redirectable: [Circular *1], [Symbol(shapeMode)]: false, [Symbol(kCapture)]: false, [Symbol(kBytesWritten)]: 0, [Symbol(kNeedDrain)]: false, [Symbol(corked)]: 0, [Symbol(kOutHeaders)]: [Object: null prototype], [Symbol(errored)]: null, [Symbol(kHighWaterMark)]: 16384, [Symbol(kRejectNonStandardBodyWrites)]: false, [Symbol(kUniqueHeaders)]: null }, _currentUrl: 'https://feeds.simplecast.com/VQImumnT', _timeout: null, [Symbol(shapeMode)]: true, [Symbol(kCapture)]: false } }

Additional Notes

No response

Originally created by @cmatera on GitHub (Jan 15, 2025). ### What happened? I have scheduled downloads setup for all of my podcasts, I noticed today that these were not downloading. The feed URL's are valid. In addition, I cannot remove the podcast and re-add it via the search UI as I get an error. ### What did you expect to happen? Podcasts to download ### Steps to reproduce the issue 1. setup a chron to download episodes ### Audiobookshelf version 2.17.7 ### How are you running audiobookshelf? Docker ### What OS is your Audiobookshelf server hosted from? Linux ### If the issue is being seen in the UI, what browsers are you seeing the problem on? None ### Logs ```shell 2025-01-14 21:00:14.793 WARN [PodcastManager] runEpisodeCheck 1 failed attempts at checking episodes for "Lone Lobos with Xolo Maridueña and Jacob Bertrand" 2025-01-14 21:00:16.205 ERROR [podcastUtils] getPodcastFeed Error AxiosError: Call to 64:ff9b::12ef:b75f is blocked. at TLSSocket.<anonymous> (/node_modules/ssrf-req-filter/lib/index.js:38:29) at TLSSocket.emit (node:events:518:28) at GetAddrInfoReqWrap.emitLookup [as callback] (node:net:1443:14) at GetAddrInfoReqWrap.onlookupall [as oncomplete] (node:dns:132:8) { config: { transitional: { silentJSONParsing: true, forcedJSONParsing: true, clarifyTimeoutError: false }, adapter: [Function: httpAdapter], transformRequest: [ [Function: transformRequest] ], transformResponse: [ [Function: transformResponse] ], timeout: 12000, xsrfCookieName: 'XSRF-TOKEN', xsrfHeaderName: 'X-XSRF-TOKEN', maxContentLength: -1, maxBodyLength: -1, env: { FormData: [Function] }, validateStatus: [Function: validateStatus], headers: { Accept: 'application/rss+xml, application/xhtml+xml, application/xml, */*;q=0.8', 'User-Agent': 'audiobookshelf (+https://audiobookshelf.org; like iTMS)' }, url: 'https://feeds.simplecast.com/VQImumnT', method: 'get', responseType: 'arraybuffer', httpAgent: Agent { _events: [Object: null prototype], _eventsCount: 2, _maxListeners: undefined, defaultPort: 443, protocol: 'https:', options: [Object: null prototype], requests: [Object: null prototype] {}, sockets: [Object: null prototype] {}, freeSockets: [Object: null prototype] {}, keepAliveMsecs: 1000, keepAlive: false, maxSockets: Infinity, maxFreeSockets: 256, scheduling: 'lifo', maxTotalSockets: Infinity, totalSocketCount: 0, maxCachedSessions: 100, _sessionCache: [Object], createConnection: [Function (anonymous)], [Symbol(shapeMode)]: false, [Symbol(kCapture)]: false, [Symbol(active)]: true }, httpsAgent: Agent { _events: [Object: null prototype], _eventsCount: 2, _maxListeners: undefined, defaultPort: 443, protocol: 'https:', options: [Object: null prototype], requests: [Object: null prototype] {}, sockets: [Object: null prototype], freeSockets: [Object: null prototype] {}, keepAliveMsecs: 1000, keepAlive: false, maxSockets: Infinity, maxFreeSockets: 256, scheduling: 'lifo', maxTotalSockets: Infinity, totalSocketCount: 1, maxCachedSessions: 100, _sessionCache: [Object], createConnection: [Function (anonymous)], [Symbol(shapeMode)]: false, [Symbol(kCapture)]: false, [Symbol(active)]: true }, data: undefined }, request: <ref *1> Writable { _events: { close: undefined, error: [Function: handleRequestError], prefinish: undefined, finish: undefined, drain: undefined, response: [Function: handleResponse], socket: [Array], timeout: undefined, abort: undefined }, _writableState: WritableState { highWaterMark: 16384, length: 0, corked: 0, onwrite: [Function: bound onwrite], writelen: 0, bufferedIndex: 0, pendingcb: 0, [Symbol(kState)]: 17580812, [Symbol(kBufferedValue)]: null }, _maxListeners: undefined, _options: { maxRedirects: 21, maxBodyLength: 10485760, protocol: 'https:', path: '/VQImumnT', method: 'GET', headers: [Object], agent: [Agent], agents: [Object], auth: undefined, hostname: 'feeds.simplecast.com', port: null, nativeProtocols: [Object], pathname: '/VQImumnT' }, _ended: true, _ending: true, _redirectCount: 0, _redirects: [], _requestBodyLength: 0, _requestBodyBuffers: [], _eventsCount: 3, _onNativeResponse: [Function (anonymous)], _currentRequest: ClientRequest { _events: [Object: null prototype], _eventsCount: 7, _maxListeners: undefined, outputData: [], outputSize: 0, writable: true, destroyed: false, _last: true, chunkedEncoding: false, shouldKeepAlive: false, maxRequestsOnConnectionReached: false, _defaultKeepAlive: true, useChunkedEncodingByDefault: false, sendDate: false, _removedConnection: false, _removedContLen: false, _removedTE: false, strictContentLength: false, _contentLength: 0, _hasBody: true, _trailer: '', finished: true, _headerSent: true, _closed: false, socket: [TLSSocket], _header: 'GET /VQImumnT HTTP/1.1\r\n' + 'Accept: application/rss+xml, application/xhtml+xml, application/xml, */*;q=0.8\r\n' + 'User-Agent: audiobookshelf (+https://audiobookshelf.org; like iTMS)\r\n' + 'Host: feeds.simplecast.com\r\n' + 'Connection: close\r\n' + '\r\n', _keepAliveTimeout: 0, _onPendingData: [Function: nop], agent: [Agent], socketPath: undefined, method: 'GET', maxHeaderSize: undefined, insecureHTTPParser: undefined, joinDuplicateHeaders: undefined, path: '/VQImumnT', _ended: false, res: null, aborted: false, timeoutCb: null, upgradeOrConnect: false, parser: null, maxHeadersCount: null, reusedSocket: false, host: 'feeds.simplecast.com', protocol: 'https:', _redirectable: [Circular *1], [Symbol(shapeMode)]: false, [Symbol(kCapture)]: false, [Symbol(kBytesWritten)]: 0, [Symbol(kNeedDrain)]: false, [Symbol(corked)]: 0, [Symbol(kOutHeaders)]: [Object: null prototype], [Symbol(errored)]: null, [Symbol(kHighWaterMark)]: 16384, [Symbol(kRejectNonStandardBodyWrites)]: false, [Symbol(kUniqueHeaders)]: null }, _currentUrl: 'https://feeds.simplecast.com/VQImumnT', _timeout: null, [Symbol(shapeMode)]: true, [Symbol(kCapture)]: false } } ``` ### Additional Notes _No response_
adam added the bug label 2026-04-25 00:07:43 +02:00
adam closed this issue 2026-04-25 00:07:43 +02:00
Author
Owner

@nichwall commented on GitHub (Jan 15, 2025):

Is this feed hosted locally? Looks like you are being blocked by the SSRF filter.

Edit to add link to documentation https://www.audiobookshelf.org/docs#security

@nichwall commented on GitHub (Jan 15, 2025): Is this feed hosted locally? Looks like you are being blocked by the SSRF filter. Edit to add link to documentation https://www.audiobookshelf.org/docs#security
Author
Owner

@cmatera commented on GitHub (Jan 15, 2025):

It is hosted locally yes…

Sent from my iPhone

On Tue, Jan 14, 2025 at 9:17 PM Nicholas W @.***> wrote:

Is this feed hosted locally? Looks like you are being blocked by the SSRF
filter.


Reply to this email directly, view it on GitHub
https://github.com/advplyr/audiobookshelf/issues/3840#issuecomment-2591493942,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABSGSKWHYNKJ5WGGGYKONPD2KXAMDAVCNFSM6AAAAABVGFWTTGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKOJRGQ4TGOJUGI
.
You are receiving this because you authored the thread.Message ID:
@.***>

@cmatera commented on GitHub (Jan 15, 2025): It is hosted locally yes… Sent from my iPhone On Tue, Jan 14, 2025 at 9:17 PM Nicholas W ***@***.***> wrote: > Is this feed hosted locally? Looks like you are being blocked by the SSRF > filter. > > — > Reply to this email directly, view it on GitHub > <https://github.com/advplyr/audiobookshelf/issues/3840#issuecomment-2591493942>, > or unsubscribe > <https://github.com/notifications/unsubscribe-auth/ABSGSKWHYNKJ5WGGGYKONPD2KXAMDAVCNFSM6AAAAABVGFWTTGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKOJRGQ4TGOJUGI> > . > You are receiving this because you authored the thread.Message ID: > ***@***.***> >
Author
Owner

@cmatera commented on GitHub (Jan 15, 2025):

Thanks @nichwall when I disabled the SSRF filter via my docker compose file, items began downloading. What’s strange is that it worked prior w/out disabling it… in any case I guess this isn’t a bug! Appreciate the assist

@cmatera commented on GitHub (Jan 15, 2025): Thanks @nichwall when I disabled the SSRF filter via my docker compose file, items began downloading. What’s strange is that it worked prior w/out disabling it… in any case I guess this isn’t a bug! Appreciate the assist
Author
Owner

@nichwall commented on GitHub (Jan 15, 2025):

The SSRF filter was introduced a while ago (don't remember exactly which server version), but the environment variable to disable it was added in 2.11.0, released in July 2024. You must have been running an old version of the server.

@nichwall commented on GitHub (Jan 15, 2025): The SSRF filter was introduced a while ago (don't remember exactly which server version), but the environment variable to disable it was added in 2.11.0, released in July 2024. You must have been running an old version of the server.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/audiobookshelf#2493