[Bug]: Direct RSS feed URL submission errors if podcast is not searchable #2775

Closed
opened 2026-04-25 00:10:28 +02:00 by adam · 9 comments
Owner

Originally created by @alan-cugler on GitHub (May 16, 2025).

What happened?

I fed ABS a RSS url for a "private" podcast (a.k.a. its not going on a public podcast platform). This resulted in "Failed to get podcast feed" error in the gui.

What did you expect to happen?

I was expecting the podcast rss.xml to be loaded and for it to detect a single episode for the podcast and download it.

Steps to reproduce the issue

  1. I developed a rss.xml that was validated https://validator.w3.org/feed/.

here is an example rss.xml file:

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">
  <channel>
    <title>Context Matters</title>
    <link>https://www.youtube.com/@context.matters</link>
    <description>Context Matters focuses on uncovering hidden global systems and power structures.</description>

    <itunes:author>@EconomicsExplained</itunes:author>
    <itunes:category text="News"></itunes:category>
    <itunes:explicit>False</itunes:explicit>
    <itunes:type>episodic</itunes:type>
    <itunes:block>Yes</itunes:block>

    <language>en-us</language>
    <generator>Podcastipy</generator>
    <copyright>Private Use 2025</copyright>

    <item>
      <title>Australian Elections: Explained</title>
      <enclosure
        url="https://rss.example.com/context_matters/audio/australian-elections-explained.mp3" 
        length="7941284"
        type="audio/mpeg"
      />
      <guid>https://rss.example.com/context_matters/audio/australian-elections-explained.mp3</guid>
      <pubDate>Wed, 14 May 2025 20:26:11 GMT</pubDate>
      <description>asdasdasdasdasdasdasd</description>
      <itunes:duration>619</itunes:duration>
      <itunes:explicit>false</itunes:explicit>
    </item>
  </channel>
</rss>
  1. ensured the podcast rss.xml and mp3 files were available to the internet:
# file: /etc/nginx/sites-available/podcastipy.conf

server {
    listen 80;
    server_name rss.example.com;
    if ($scheme != "https") {
        return 301 https://$host$request_uri;
    }
}

server {
    http2 on;
    listen 443 ssl;
    server_name rss.example.com;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    include /etc/letsencrypt/options-ssl-nginx.conf;

    root /media/podcastipy;

    location / {
        autoindex on;
        try_files $uri $uri/ =404;
	types {
		application/rss+xml xml;
	}
    }
}
/media/podcastipy# tree
.
└── context_matters
    ├── audio
    │   └── australian-elections-explained.mp3
    └── rss.xml
  1. I ensured this was all available from the internet.
  2. attempt to give full url feed to ABS

Audiobookshelf version

v2.21.0

How are you running audiobookshelf?

Debian/PPA

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?

Chrome

Logs

2025-05-16 15:29:38.922

FATAL

[Server] Uncaught exception origin: uncaughtException, error: Error [ERR_INTERNAL_ASSERTION]: This is caused by either a bug in Node.js or incorrect usage of Node.js internals. Please open an issue with this stack trace at https://github.com/nodejs/node/issues at assert (node:internal/assert:14:11) at internalConnect (node:net:1037:3) at defaultTriggerAsyncIdScope (node:internal/async_hooks:464:18) at GetAddrInfoReqWrap.emitLookup [as callback] (node:net:1481:9) at GetAddrInfoReqWrap.onlookupall [as oncomplete] (node:dns:130:8) { code: 'ERR_INTERNAL_ASSERTION' }

Additional Notes

Again, this podcast RSS file should be direct download for ABS and not something it will find on public podcast platform providers. At this point I think it requires a podcast to be lookup-able from some public database, or it has rss.xml tag requirements I cant ascertain.

I attempted to jump on the discord for some help, but outside of validating basic functionality, there wasnt confidence on how to approach the issue.

Originally created by @alan-cugler on GitHub (May 16, 2025). ### What happened? I fed ABS a RSS url for a "private" podcast (a.k.a. its not going on a public podcast platform). This resulted in "Failed to get podcast feed" error in the gui. ### What did you expect to happen? I was expecting the podcast rss.xml to be loaded and for it to detect a single episode for the podcast and download it. ### Steps to reproduce the issue 1. I developed a rss.xml that was validated https://validator.w3.org/feed/. here is an example rss.xml file: ``` <?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"> <channel> <title>Context Matters</title> <link>https://www.youtube.com/@context.matters</link> <description>Context Matters focuses on uncovering hidden global systems and power structures.</description> <itunes:author>@EconomicsExplained</itunes:author> <itunes:category text="News"></itunes:category> <itunes:explicit>False</itunes:explicit> <itunes:type>episodic</itunes:type> <itunes:block>Yes</itunes:block> <language>en-us</language> <generator>Podcastipy</generator> <copyright>Private Use 2025</copyright> <item> <title>Australian Elections: Explained</title> <enclosure url="https://rss.example.com/context_matters/audio/australian-elections-explained.mp3" length="7941284" type="audio/mpeg" /> <guid>https://rss.example.com/context_matters/audio/australian-elections-explained.mp3</guid> <pubDate>Wed, 14 May 2025 20:26:11 GMT</pubDate> <description>asdasdasdasdasdasdasd</description> <itunes:duration>619</itunes:duration> <itunes:explicit>false</itunes:explicit> </item> </channel> </rss> ``` 2. ensured the podcast rss.xml and mp3 files were available to the internet: ``` # file: /etc/nginx/sites-available/podcastipy.conf server { listen 80; server_name rss.example.com; if ($scheme != "https") { return 301 https://$host$request_uri; } } server { http2 on; listen 443 ssl; server_name rss.example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; root /media/podcastipy; location / { autoindex on; try_files $uri $uri/ =404; types { application/rss+xml xml; } } } ``` ``` /media/podcastipy# tree . └── context_matters ├── audio │   └── australian-elections-explained.mp3 └── rss.xml ``` 3. I ensured this was all available from the internet. 4. attempt to give full url feed to ABS ### Audiobookshelf version v2.21.0 ### How are you running audiobookshelf? Debian/PPA ### 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? Chrome ### Logs ```shell 2025-05-16 15:29:38.922 FATAL [Server] Uncaught exception origin: uncaughtException, error: Error [ERR_INTERNAL_ASSERTION]: This is caused by either a bug in Node.js or incorrect usage of Node.js internals. Please open an issue with this stack trace at https://github.com/nodejs/node/issues at assert (node:internal/assert:14:11) at internalConnect (node:net:1037:3) at defaultTriggerAsyncIdScope (node:internal/async_hooks:464:18) at GetAddrInfoReqWrap.emitLookup [as callback] (node:net:1481:9) at GetAddrInfoReqWrap.onlookupall [as oncomplete] (node:dns:130:8) { code: 'ERR_INTERNAL_ASSERTION' } ``` ### Additional Notes Again, this podcast RSS file should be direct download for ABS and not something it will find on public podcast platform providers. At this point I think it requires a podcast to be lookup-able from some public database, or it has rss.xml tag requirements I cant ascertain. I attempted to jump on the discord for some help, but outside of validating basic functionality, there wasnt confidence on how to approach the issue.
adam added the bug label 2026-04-25 00:10:28 +02:00
adam closed this issue 2026-04-25 00:10:28 +02:00
Author
Owner

@alan-cugler commented on GitHub (May 16, 2025):

I am a linux admin and devops engineer, so if there is any tests or logs you want to see let me know. I didnt see anything in the crash logs, and the active daily logs outside of the pasted error seem to show a single line of trying to get the RSS feed from the URL and then moving on with regular operations, no additional details given.

@alan-cugler commented on GitHub (May 16, 2025): I am a linux admin and devops engineer, so if there is any tests or logs you want to see let me know. I didnt see anything in the crash logs, and the active daily logs outside of the pasted error seem to show a single line of trying to get the RSS feed from the URL and then moving on with regular operations, no additional details given.
Author
Owner

@advplyr commented on GitHub (May 17, 2025):

Looks like a duplicate of #3967. I'm not able to reproduce it and the error doesn't give anything useful.
Looks like something with node and DNS resolution.

That crash has been reported a few times in closed issue but I don't see anything useful in those either. https://github.com/advplyr/audiobookshelf/issues?q=is%3Aissue%20state%3Aclosed%20ERR_INTERNAL_ASSERTION

@advplyr commented on GitHub (May 17, 2025): Looks like a duplicate of #3967. I'm not able to reproduce it and the error doesn't give anything useful. Looks like something with node and DNS resolution. That crash has been reported a few times in closed issue but I don't see anything useful in those either. https://github.com/advplyr/audiobookshelf/issues?q=is%3Aissue%20state%3Aclosed%20ERR_INTERNAL_ASSERTION
Author
Owner

@alan-cugler commented on GitHub (May 20, 2025):

I looked at issue #3967 all of their listed podcasts I had to go lookup the podcast's rss feed and those loaded fine into my ABS.

Is there a way to validate if ABS is using the lookup functionality or direct pulling down from a provided RSS feed URL? My current working theory is ABS HAS TO use and resolve a successful search for a podcast and never direct retrieves from a URL.

@alan-cugler commented on GitHub (May 20, 2025): I looked at issue #3967 all of their listed podcasts I had to go lookup the podcast's rss feed and those loaded fine into my ABS. Is there a way to validate if ABS is using the lookup functionality or direct pulling down from a provided RSS feed URL? My current working theory is ABS **HAS TO** use and resolve a successful search for a podcast and never direct retrieves from a URL.
Author
Owner

@advplyr commented on GitHub (May 20, 2025):

Is there a way to validate if ABS is using the lookup functionality or direct pulling down from a provided RSS feed URL? My current working theory is ABS HAS TO use and resolve a successful search for a podcast and never direct retrieves from a URL.

Can you rephrase this question? I don't understand what you mean by lookup functionality and direct pulling down.

@advplyr commented on GitHub (May 20, 2025): > Is there a way to validate if ABS is using the lookup functionality or direct pulling down from a provided RSS feed URL? My current working theory is ABS **HAS TO** use and resolve a successful search for a podcast and never direct retrieves from a URL. Can you rephrase this question? I don't understand what you mean by lookup functionality and direct pulling down.
Author
Owner

@alan-cugler commented on GitHub (May 21, 2025):

Yeah, sorry for not being clear. I am speculating a lot. So the premise of my question could be wrong.

Here in ABS you get a search bar:
Image

I am asking when you give a valid RSS feed URL, is ABS sending a direct request to that URL or is ABS still taking that URL as a search term?

@alan-cugler commented on GitHub (May 21, 2025): Yeah, sorry for not being clear. I am speculating a lot. So the premise of my question could be wrong. Here in ABS you get a search bar: ![Image](https://github.com/user-attachments/assets/112a1eb7-ace3-4dc5-9f7d-d0fd7999a731) I am asking when you give a valid RSS feed URL, is ABS sending a direct request to that URL or is ABS still taking that URL as a search term?
Author
Owner

@alan-cugler commented on GitHub (May 21, 2025):

I am trying to figure out how to validate if its possible to retrieve a RSS feed that isnt listed on whatever service ABS is using for the "search term" lookup.

@alan-cugler commented on GitHub (May 21, 2025): I am trying to figure out how to validate if its possible to retrieve a RSS feed that isnt listed on whatever service ABS is using for the "search term" lookup.
Author
Owner

@alan-cugler commented on GitHub (May 22, 2025):

hmm I tested doing a search term and a full URL in that bar while watching my DNS server logs. it does seem that when its a full URL it doesnt go to itunes lookup.

Can you point to the code where ABS is expecting a full URL for a podcast RSS. I want to see what its expecting to find from that URL. Because its possible my test podcast and other peoples podcasts are simply missing some hardcoded ABS expectation. like a directory structure or metadata tag.

@alan-cugler commented on GitHub (May 22, 2025): hmm I tested doing a search term and a full URL in that bar while watching my DNS server logs. it does seem that when its a full URL it doesnt go to itunes lookup. Can you point to the code where ABS is expecting a full URL for a podcast RSS. I want to see what its expecting to find from that URL. Because its possible my test podcast and other peoples podcasts are simply missing some hardcoded ABS expectation. like a directory structure or metadata tag.
Author
Owner

@nichwall commented on GitHub (May 22, 2025):

Audiobookshelf expects a valid RSS feed, if you provide the RSS URL then it will use the RSS feed returned by the URL.

Can you enable Debug logs on the server? That will provide more information.

@nichwall commented on GitHub (May 22, 2025): Audiobookshelf expects a valid RSS feed, if you provide the RSS URL then it will use the RSS feed returned by the URL. Can you enable Debug logs on the server? That will provide more information.
Author
Owner

@advplyr commented on GitHub (May 22, 2025):

From the error that you shared this appears to be a networking issue and not an issue with the RSS feed itself.

If you enter this RSS feed URL it will request it directly using axios.

https://feeds.fireside.fm/selfhosted/rss

@advplyr commented on GitHub (May 22, 2025): From the error that you shared this appears to be a networking issue and not an issue with the RSS feed itself. If you enter this RSS feed URL it will request it directly using axios. https://feeds.fireside.fm/selfhosted/rss
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/audiobookshelf#2775