Skip to content

Merge fix http trailer headers#55

Merged
Alkarex merged 4 commits intofreshrssfrom
merge-fix-http-trailer-headers
Sep 20, 2025
Merged

Merge fix http trailer headers#55
Alkarex merged 4 commits intofreshrssfrom
merge-fix-http-trailer-headers

Conversation

@Alkarex
Copy link
Member

@Alkarex Alkarex commented Sep 20, 2025

fix simplepie#942

Some feeds are not parsed correctly due to wrong handling of HTTP trailer headers such as Server-Timing.

Example of feed:
https://www.caranddriver.com/rss/all.xml
(Note that the bug may or may not exhibit itself depending on the cURL and PHP versions)

Downstream discussion:

SimplePie tries to XML parse something like </rss>server-timing: rtt; dur=6.131, retrans; dur=0, trailer-timestamp; dur=1758222994925 which obviously fails.

In the case of normal HTTP transfer (not chunked), we need to use content-length to know where the body stops, but content-length is wrong if any compression was used.
So I believe we should let cURL perform the separation of HTTP headers and body instead of using the SimplePie parser.

fix simplepie#942

Some feeds are not parsed correctly due to wrong handling of [HTTP trailer headers](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Trailer) such as [Server-Timing](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Server-Timing).

Example of feed:
https://www.caranddriver.com/rss/all.xml
(Note that the bug may or may not exhibit itself depending on the cURL and PHP versions)

Downstream discussion:
* FreshRSS/FreshRSS#7981
* FreshRSS/FreshRSS#7983

SimplePie tries to XML parse something like `</rss>server-timing: rtt; dur=6.131, retrans; dur=0, trailer-timestamp; dur=1758222994925` which obviously fails.

In the case of normal HTTP transfer (not chunked), we need to use content-length to know where the body stops, but content-length is wrong if any compression was used.
So I believe we should let cURL perform the separation of HTTP headers and body instead of using the SimplePie parser.
…eaders

fix simplepie#942

Some feeds are not parsed correctly due to wrong handling of [HTTP trailer headers](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Trailer) such as [Server-Timing](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Server-Timing).

Example of feed:
https://www.caranddriver.com/rss/all.xml
(Note that the bug may or may not exhibit itself depending on the cURL and PHP versions)

Downstream discussion:
* FreshRSS/FreshRSS#7981
* FreshRSS/FreshRSS#7983

SimplePie tries to XML parse something like `</rss>server-timing: rtt; dur=6.131, retrans; dur=0, trailer-timestamp; dur=1758222994925` which obviously fails.

In the case of normal HTTP transfer (not chunked), we need to use content-length to know where the body stops, but content-length is wrong if any compression was used.
So I believe we should let cURL perform the separation of HTTP headers and body instead of using the SimplePie parser.
@Alkarex Alkarex added the bug label Sep 20, 2025
@Alkarex Alkarex merged commit 6485c1d into freshrss Sep 20, 2025
20 checks passed
@Alkarex Alkarex deleted the merge-fix-http-trailer-headers branch September 20, 2025 16:57
Alkarex added a commit that referenced this pull request Sep 20, 2025
Alkarex added a commit that referenced this pull request Sep 20, 2025
Alkarex added a commit to Alkarex/FreshRSS that referenced this pull request Sep 20, 2025
Alkarex added a commit to FreshRSS/FreshRSS that referenced this pull request Oct 1, 2025
* Fix SimplePie support of HTTP trailer headers
fix #7981
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Trailer
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Server-Timing
We need to use content-length to know where the body stops, but content-length is wrong is any compression was used.
So let cURL perform the separation of HTTP headers and body instead of using the SimplePie parser.

* Minor whitespace

* Same change for lib_rss

* Move changes to SimplePie repo
FreshRSS/simplepie#55
FreshRSS/simplepie#57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Wrong parsing of HTTP trailer headers

1 participant