diff --git a/src/jetzig/http/Server.zig b/src/jetzig/http/Server.zig index aa4387a..e2d6976 100644 --- a/src/jetzig/http/Server.zig +++ b/src/jetzig/http/Server.zig @@ -598,17 +598,20 @@ fn matchPublicContent(self: *Server, request: *jetzig.http.Request) !?StaticReso var walker = try iterable_dir.walk(request.allocator); defer walker.deinit(); - + var path_buffer: [256]u8 = undefined; while (try walker.next()) |file| { if (file.kind != .file) continue; - - if (std.mem.eql(u8, file.path, request.path.file_path[1..])) { + const file_path = if (builtin.os.tag == .windows) blk: { + _ = std.mem.replace(u8, file.path, std.fs.path.sep_str_windows, std.fs.path.sep_str_posix, &path_buffer); + break :blk path_buffer[0..file.path.len]; + } else file.path; + if (std.mem.eql(u8, file_path, request.path.file_path[1..])) { const content = try iterable_dir.readFileAlloc( request.allocator, - file.path, + file_path, jetzig.config.get(usize, "max_bytes_public_content"), ); - const extension = std.fs.path.extension(file.path); + const extension = std.fs.path.extension(file_path); const mime_type = if (self.mime_map.get(extension)) |mime| mime else "application/octet-stream"; return .{ .content = content,