diff --git a/core/storageproviders/s3Storage.go b/core/storageproviders/s3Storage.go index 09d82f871..1495d50d2 100644 --- a/core/storageproviders/s3Storage.go +++ b/core/storageproviders/s3Storage.go @@ -5,6 +5,7 @@ import ( "fmt" "net/http" "os" + "path" "path/filepath" "strings" "time" @@ -149,6 +150,7 @@ func (s *S3Storage) Save(filePath string, retryCount int) (string, error) { maxAgeSeconds := utils.GetCacheDurationSecondsForPath(filePath) cacheControlHeader := fmt.Sprintf("max-age=%d", maxAgeSeconds) + uploadInput := &s3manager.UploadInput{ Bucket: aws.String(s.s3Bucket), // Bucket to be used Key: aws.String(remotePath), // Name of the file to be saved @@ -156,6 +158,14 @@ func (s *S3Storage) Save(filePath string, retryCount int) (string, error) { CacheControl: &cacheControlHeader, } + if path.Ext(filePath) == ".m3u8" { + noCacheHeader := "no-cache, no-store, must-revalidate" + contentType := "application/x-mpegURL" + + uploadInput.CacheControl = &noCacheHeader + uploadInput.ContentType = &contentType + } + if s.s3ACL != "" { uploadInput.ACL = aws.String(s.s3ACL) } else {