diff --git a/lib/PiTube/Controller/Nginx.pm b/lib/PiTube/Controller/Nginx.pm
index 789af4a5fbc2335a5f6d46772e528b845ffa4d48..82a6c1b6620b90972471e335814ae03580ffb244 100644
--- a/lib/PiTube/Controller/Nginx.pm
+++ b/lib/PiTube/Controller/Nginx.pm
@@ -86,15 +86,20 @@ sub callback_recorder {
 sub callback_hls {
     my $c = shift;
 
+    my $code = 403;
+
     if ($c->req->headers->header('X-Original-URI') =~ HLS ) {
-        if ( $c->session->{user}{acl}{ $1 } & 4 ) { #TODO: constant
-            $c->render( status => 204, text => '' );
-            return;
+        $code = 204 if $c->session->{user}{acl}{ $1 } & 4;
+
+        if (! $code) {
+            my $is_public = $c->schema->resultset('Stream')->count({
+                key => $1, is_public => 't'
+            });
+            $code = 204 if $is_public;
         }
     }
 
-    $c->render( status => 403, text => '');
-
+    $c->render( status => $code, text => '');
 }
 
 sub callback_record {