diff --git a/classes/handler/public.php b/classes/handler/public.php
old mode 100644
new mode 100755
index 8440bc3551647e702b0f9827a2301c3e5538598a..e892a9797003c05302acac45cef2f17e62acb9d2
--- a/classes/handler/public.php
+++ b/classes/handler/public.php
@@ -934,17 +934,17 @@ class Handler_Public extends Handler {
 	}
 
 	function cached_url() {
-		@$hash = basename($_GET['hash']);
+		@$req_filename = basename($_GET['hash']);
 
 		// we don't need an extension to find the file, hash is a complete URL
-		$hash = preg_replace("/\.[^\.]*$/", "", $hash);
+		$hash = preg_replace("/\.[^\.]*$/", "", $req_filename);
 
 		if ($hash) {
 
 			$filename = CACHE_DIR . '/images/' . $hash;
 
 			if (file_exists($filename)) {
-				header("Content-Disposition: inline; filename=\"$hash\"");
+				header("Content-Disposition: inline; filename=\"$req_filename\"");
 
 				send_local_file($filename);
 
diff --git a/include/functions.php b/include/functions.php
index 7ebbe38b38b447137fad23c2cce88290e851b04f..b6e49716cd88ee710ede90a9fb835fb996f35761 100755
--- a/include/functions.php
+++ b/include/functions.php
@@ -2574,6 +2574,13 @@
 			}
 
 			$mimetype = mime_content_type($filename);
+
+			// this is hardly ideal but 1) only media is cached in images/ and 2) seemingly only mp4
+			// video files are detected as octet-stream by mime_content_type()
+
+			if ($mimetype == "application/octet-stream")
+				$mimetype = "video/mp4";
+
 			header("Content-type: $mimetype");
 
 			$stamp = gmdate("D, d M Y H:i:s", filemtime($filename)) . " GMT";