mirror of
https://github.com/miniflux/v2.git
synced 2025-06-27 16:36:00 +00:00
fix: update Last-Modified if it changes in a 304 response
When a server returns a 304 response with a strong validator, any other stored fields must be updated if they are also present in the response. This behaviour is described in RFC9111, sections 3.2 and 4.3.4.
This commit is contained in:
parent
cb610230d9
commit
562a7b79a5
1 changed files with 5 additions and 2 deletions
|
@ -326,8 +326,6 @@ func RefreshFeed(store *storage.Storage, userID, feedID int64, forceRefresh bool
|
|||
go integration.PushEntries(originalFeed, newEntries, userIntegrations)
|
||||
}
|
||||
|
||||
// We update caching headers only if the feed has been modified,
|
||||
// because some websites don't return the same headers when replying with a 304.
|
||||
originalFeed.EtagHeader = responseHandler.ETag()
|
||||
originalFeed.LastModifiedHeader = responseHandler.LastModified()
|
||||
|
||||
|
@ -343,6 +341,11 @@ func RefreshFeed(store *storage.Storage, userID, feedID int64, forceRefresh bool
|
|||
slog.Int64("user_id", userID),
|
||||
slog.Int64("feed_id", feedID),
|
||||
)
|
||||
// Last-Modified may be updated even if ETag is not. In this case, per
|
||||
// RFC9111 sections 3.2 and 4.3.4, the stored response must be updated.
|
||||
if responseHandler.LastModified() != "" {
|
||||
originalFeed.LastModifiedHeader = responseHandler.LastModified()
|
||||
}
|
||||
}
|
||||
|
||||
originalFeed.ResetErrorCounter()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue