Bond_009
6f8ccab788
Move non-jellyfin extensions to separate project
3 years ago
Patrick Barron
be88efce3c
Merge branch 'master' into authenticationdb-efcore
...
# Conflicts:
# Emby.Server.Implementations/Devices/DeviceManager.cs
# Emby.Server.Implementations/HttpServer/Security/SessionContext.cs
# Emby.Server.Implementations/Security/AuthenticationRepository.cs
# Emby.Server.Implementations/Session/SessionManager.cs
# Jellyfin.Server.Implementations/Security/AuthorizationContext.cs
# MediaBrowser.Controller/Library/IUserManager.cs
# MediaBrowser.Controller/Net/ISessionContext.cs
3 years ago
Patrick Barron
336ba2879f
Re-add support for API keys
3 years ago
Patrick Barron
3264575047
Add data migration
3 years ago
Patrick Barron
3d9c16ba6b
Fix concurrency issues
3 years ago
crobibero
e021a0e9ce
Update to dotnet 5.0.7
3 years ago
Bond_009
06401ffa0d
Fix duplicate keys causing an exception
3 years ago
Bond_009
2fc14375f8
Fix index out of range and add reg tests
3 years ago
Claus Vium
93387ba235
Merge pull request #5990 from BaronGreenback/UrlDecoding
3 years ago
BaronGreenback
147612f59b
Update Jellyfin.Server/Middleware/UrlDecodeQueryFeature.cs
...
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
3 years ago
BaronGreenback
37326a8099
Update Jellyfin.Server/Middleware/UrlDecodeQueryFeature.cs
...
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
3 years ago
BaronGreenback
ada052fcb1
Update Jellyfin.Server/Middleware/UrlDecodeQueryFeature.cs
...
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
3 years ago
BaronGreenback
c1fa7cbbf8
Update Jellyfin.Server/Middleware/UrlDecodeQueryFeature.cs
...
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
3 years ago
BaronGreenback
371f8629b1
Update Jellyfin.Server/Middleware/UrlDecodeQueryFeature.cs
...
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
3 years ago
BaronGreenback
e1a0b5d2a1
Update Jellyfin.Server/Middleware/UrlDecodeQueryFeature.cs
...
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
3 years ago
BaronGreenback
cc2166550f
Update Jellyfin.Server/Middleware/QueryStringDecodingMiddleware.cs
...
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
3 years ago
BaronGreenback
b59e81dcdf
Update Jellyfin.Server/Middleware/QueryStringDecodingMiddleware.cs
...
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
3 years ago
crobibero
dfc776e451
Redirect to default if root is requested
3 years ago
crobibero
9595aa258e
Simplify BaseUrlRedirectionMiddleware
3 years ago
crobibero
01e8ff8ddf
Merge remote-tracking branch 'upstream/master' into healthy-base-url
3 years ago
Fernando Fernández
6db229af5d
Address review comments
4 years ago
Fernando Fernández
69baa9c467
Run SQLite query planner optimization at shutdown/restart
4 years ago
Patrick Barron
b6446c06ee
Merge branch 'master' into authenticationdb-efcore
...
# Conflicts:
# Emby.Server.Implementations/Security/AuthenticationRepository.cs
# Jellyfin.Server.Implementations/Security/AuthorizationContext.cs
# MediaBrowser.Controller/Devices/IDeviceManager.cs
4 years ago
Patrick Barron
a0c6f72762
Migrate authentication db to EF Core
4 years ago
Bond_009
7e8428e588
Enable nullable reference types for Emby.Server.Implementations
4 years ago
Patrick Barron
a225f34796
Merge branch 'master' into authenticationdb-efcore
...
# Conflicts:
# Jellyfin.Api/Helpers/RequestHelpers.cs
4 years ago
crobibero
66b185898f
Update to dotnet5.0.6
4 years ago
BaronGreenback
d0bfb56d2e
changed to slice.
4 years ago
BaronGreenback
903bf2a086
changed to use index
4 years ago
BaronGreenback
bd71de131c
Changed to use span
4 years ago
BaronGreenback
7185de970c
Merge remote-tracking branch 'upstream/master' into UrlDecoding
4 years ago
BaronGreenback
4f5c9e9504
tests and small fix.
4 years ago
BaronGreenback
c8061f92be
slight format correction.
4 years ago
BaronGreenback
dabeabc553
corrected comments
4 years ago
BaronGreenback
a7bccd4fe0
removed unneeded logger.
4 years ago
BaronGreenback
81d675990f
Enable automatic url decoding
4 years ago
Bond-009
eeb5d4bd1e
Merge pull request #5842 from BaronGreenback/optimization
...
Code Clean up: Group Methods
4 years ago
crobibero
f8cfc55a36
Clean client filename generation
4 years ago
crobibero
1d6224c9c6
Add endpoint to log client events
4 years ago
Bond-009
18cf030c77
Merge pull request #5866 from Bond-009/httpmsghandler
...
Switch from HttpClientHandler to SocketsHttpHandler
4 years ago
Bond-009
233900401e
Merge pull request #5873 from cvium/fix-displaypref-migration
4 years ago
cvium
4d7c1fbdca
use int.Parse
4 years ago
cvium
cbb855e65f
Check for empty string when migrating displaypreferences
4 years ago
Bond_009
500c2e5224
Switch from HttpClientHandler to SocketsHttpHandler
...
SocketsHttpHandler is the default for .Net Core 2.1 and newer
Set RequestHeaderEncoding to UTF-8 by default
4 years ago
cvium
586e1fc58a
use IF NOT EXISTS in migration
4 years ago
BaronGreenback
bc1cc2d04a
Remove unused using directives
4 years ago
BaronGreenback
bb6fddde9a
Group Methods
4 years ago
Joshua M. Boniface
e2cfc308ea
Merge pull request #5729 from crobibero/dotnet5.0.5
...
Update to dotnet 5.0.5
4 years ago
crobibero
78791a932f
Simplify baseUrl check
4 years ago
crobibero
b11718a01d
Properly redirect healthcheck endpoint if using BaseUrl
4 years ago
Bond_009
a4ffc7a813
Fix random failing of tests
...
Fully initialize the configuration manager at the init stage
```
Failed Jellyfin.Server.Integration.Tests.Controllers.ActivityLogControllerTests.ActivityLog_GetEntries_Ok [2 s]
Error Message:
MediaBrowser.Common.Extensions.ResourceNotFoundException : Configuration with key metadata not found.
Stack Trace:
at Emby.Server.Implementations.AppBase.BaseConfigurationManager.<>c__DisplayClass43_0.<GetConfiguration>b__0(String k) in D:\a\1\s\Emby.Server.Implementations\AppBase\BaseConfigurationManager.cs:line 309
at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
at Emby.Server.Implementations.AppBase.BaseConfigurationManager.GetConfiguration(String key) in D:\a\1\s\Emby.Server.Implementations\AppBase\BaseConfigurationManager.cs:line 300
at MediaBrowser.Common.Configuration.ConfigurationManagerExtensions.GetConfiguration[T](IConfigurationManager manager, String key) in D:\a\1\s\MediaBrowser.Common\Configuration\IConfigurationManager.cs:line 88
at MediaBrowser.Controller.Library.MetadataConfigurationExtensions.GetMetadataConfiguration(IConfigurationManager config) in D:\a\1\s\MediaBrowser.Controller\Library\MetadataConfigurationStore.cs:line 28
at Emby.Server.Implementations.Library.ResolverHelper.SetDateCreated(BaseItem item, IFileSystem fileSystem, FileSystemMetadata info) in D:\a\1\s\Emby.Server.Implementations\Library\ResolverHelper.cs:line 159
at Emby.Server.Implementations.Library.ResolverHelper.EnsureDates(IFileSystem fileSystem, BaseItem item, ItemResolveArgs args) in D:\a\1\s\Emby.Server.Implementations\Library\ResolverHelper.cs:line 153
at Emby.Server.Implementations.Library.ResolverHelper.SetInitialItemValues(BaseItem item, ItemResolveArgs args, IFileSystem fileSystem, ILibraryManager libraryManager) in D:\a\1\s\Emby.Server.Implementations\Library\ResolverHelper.cs:line 81
at Emby.Server.Implementations.Library.LibraryManager.ResolveItem(ItemResolveArgs args, IItemResolver[] resolvers) in D:\a\1\s\Emby.Server.Implementations\Library\LibraryManager.cs:line 480
at Emby.Server.Implementations.Library.LibraryManager.ResolvePath(FileSystemMetadata fileInfo, IDirectoryService directoryService, IItemResolver[] resolvers, Folder parent, String collectionType, LibraryOptions libraryOptions) in D:\a\1\s\Emby.Server.Implementations\Library\LibraryManager.cs:line 618
at Emby.Server.Implementations.Library.LibraryManager.ResolvePath(FileSystemMetadata fileInfo, Folder parent) in D:\a\1\s\Emby.Server.Implementations\Library\LibraryManager.cs:line 536
at Emby.Server.Implementations.Library.LibraryManager.CreateRootFolder() in D:\a\1\s\Emby.Server.Implementations\Library\LibraryManager.cs:line 732
at Emby.Server.Implementations.Library.LibraryManager.get_RootFolder() in D:\a\1\s\Emby.Server.Implementations\Library\LibraryManager.cs:line 180
at Emby.Server.Implementations.IO.LibraryMonitor.Start() in D:\a\1\s\Emby.Server.Implementations\IO\LibraryMonitor.cs:line 135
at Emby.Server.Implementations.IO.LibraryMonitorStartup.RunAsync() in D:\a\1\s\Emby.Server.Implementations\IO\LibraryMonitorStartup.cs:line 26
at Emby.Server.Implementations.ApplicationHost.StartEntryPoints(IEnumerable`1 entryPoints, Boolean isBeforeStartup)+MoveNext() in D:\a\1\s\Emby.Server.Implementations\ApplicationHost.cs:line 541
at System.Threading.Tasks.Task.WhenAll(IEnumerable`1 tasks)
at Emby.Server.Implementations.ApplicationHost.RunStartupTasksAsync(CancellationToken cancellationToken) in D:\a\1\s\Emby.Server.Implementations\ApplicationHost.cs:line 525
at Jellyfin.Server.Integration.Tests.JellyfinApplicationFactory.CreateServer(IWebHostBuilder builder) in D:\a\1\s\tests\Jellyfin.Server.Integration.Tests\JellyfinApplicationFactory.cs:line 101
at Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory`1.EnsureServer()
at Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory`1.CreateDefaultClient(DelegatingHandler[] handlers)
at Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory`1.CreateDefaultClient(Uri baseAddress, DelegatingHandler[] handlers)
at Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory`1.CreateClient(WebApplicationFactoryClientOptions options)
at Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory`1.CreateClient()
at Jellyfin.Server.Integration.Tests.Controllers.ActivityLogControllerTests.ActivityLog_GetEntries_Ok() in D:\a\1\s\tests\Jellyfin.Server.Integration.Tests\Controllers\ActivityLogControllerTests.cs:line 21
--- End of stack trace from previous location ---
```
4 years ago
BaronGreenback
fb7587dd84
Renamed
4 years ago
cvium
01491796a2
Enable Workstation GC mode
4 years ago
Patrick Barron
44e71774b1
Rewrite device manager using EF Core
4 years ago
BaronGreenback
af027b6283
Fixed after accepting suggestion.
4 years ago
BaronGreenback
cf3aff93f2
revert change error
4 years ago
BaronGreenback
5fb7557763
Network Access Policy
4 years ago
crobibero
b1faf8c2e8
Update to dotnet 5.0.5
4 years ago
Claus Vium
f718735b4e
Merge pull request #5688 from crobibero/api-docs-sever-discovery
...
Add SessionDiscoveryInfo to generated api-docs
4 years ago
Bond-009
cb111eb767
Merge pull request #5661 from ferferga/openapi-product-version
...
Return Major.Minor.Build instead of Major.Minor.Build.Revision for OpenAPI
4 years ago
crobibero
31d1dbfda6
Add SessionDiscoveryInfo to generated api-docs
4 years ago
dependabot[bot]
820a373016
Bump Microsoft.Extensions.Diagnostics.HealthChecks from 5.0.3 to 5.0.4
...
Bumps [Microsoft.Extensions.Diagnostics.HealthChecks](https://github.com/dotnet/aspnetcore ) from 5.0.3 to 5.0.4.
- [Release notes](https://github.com/dotnet/aspnetcore/releases )
- [Commits](https://github.com/dotnet/aspnetcore/compare/v5.0.3...v5.0.4 )
Signed-off-by: dependabot[bot] <support@github.com>
4 years ago
Fernando Fernández
8c6bd2537c
Return Major.Minor.Build instead of Major.Minor.Build.Revision for OpenAPI version
4 years ago
dependabot[bot]
023467ebce
Bump Serilog.AspNetCore from 3.4.0 to 4.1.0
...
Bumps [Serilog.AspNetCore](https://github.com/serilog/serilog-aspnetcore ) from 3.4.0 to 4.1.0.
- [Release notes](https://github.com/serilog/serilog-aspnetcore/releases )
- [Commits](https://github.com/serilog/serilog-aspnetcore/compare/v3.4.0...v4.1.0 )
Signed-off-by: dependabot[bot] <support@github.com>
4 years ago
BaronGreenback
6765f6ab17
fix compilation
4 years ago
BaronGreenback
5d16d1f66d
Merge branch 'master' into RemoteAccessFix
4 years ago
Claus Vium
94820f569b
Merge pull request #5512 from crobibero/api-spec-version
4 years ago
Patrick Barron
e5380c653b
Merge branch 'master' into ef-cleanup
...
# Conflicts:
# Jellyfin.Data/Entities/Libraries/MediaFileStream.cs
# Jellyfin.Data/Jellyfin.Data.csproj
4 years ago
Bond_009
a8ed753f6c
FxCop -> Net Analyzers (part 2)
4 years ago
crobibero
1169a0214b
Set default version
4 years ago
crobibero
500832bdfd
Set openapi version to server version
4 years ago
BaronGreenback
3fdf0de6e3
Fix remote access
4 years ago
crobibero
8e09276d7d
Add websocket session message type to generated openapi.json
4 years ago
Bond_009
fa8bfece4e
Split integration tests from unit tests
4 years ago
Bond_009
9ed7f429c0
FxCop -> Net Analyzers (part 1)
4 years ago
Joshua M. Boniface
3c46f10e3d
Merge pull request #5315 from BaronGreenback/FixFor5280Part2
4 years ago
Patrick Barron
f638ee6b09
Enable nullable for Jellyfin.Data and remove unnecessary attributes
4 years ago
dkanada
8615847a8a
Merge pull request #5345 from BaronGreenback/IP6Fix
...
Dual IP4 / IP6 server fails on non-windows platforms
4 years ago
crobibero
631c0a35f6
Always use case insensitive json parsing for api
4 years ago
BaronGreenback
c275c5c1ea
Update Jellyfin.Server/Program.cs
...
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
4 years ago
Bond-009
1f0bbe266c
Merge pull request #5342 from BaronGreenback/errorMessageCorrection
...
Corrected logging message
4 years ago
BaronGreenback
5942948714
Kestrel workaround
4 years ago
BaronGreenback
fdd4b6b3f1
Changed message
4 years ago
BaronGreenback
80ca3da55c
Merge remote-tracking branch 'upstream/master' into FixFor5280Part2
4 years ago
BaronGreenback
f666b7e102
fix
4 years ago
Bond_009
032d72a8a7
Pls fix race condition
4 years ago
Joshua M. Boniface
c0c4aff8a6
Merge pull request #5276 from Bond-009/minor12
4 years ago
Bond_009
57102090d3
Add tests for DashboardController
4 years ago
Bond_009
b1fe28d0a6
Use GetEncodingOptions where possible
4 years ago
crobibero
9da972682c
Enable non-nullable reference types in generated api spec
4 years ago
crobibero
d5f0b046bb
Add image file accept to openapi
4 years ago
crobibero
407c35f087
Update to dotnet 5.0.3
4 years ago
dkanada
54a3ab15a3
Merge pull request #5005 from jellyfin/bytes
...
JsonSerializer deserialize from bytes where possible
4 years ago
crobibero
ef97ead707
Fix openapi nullable properties
4 years ago
Joshua M. Boniface
4b6b90e0b1
Merge pull request #5069 from crobibero/obsolete-param
4 years ago
Joshua M. Boniface
3bf7e18886
Merge pull request #5031 from crobibero/5.0.2
...
Update to dotnet 5.0.2
4 years ago
Cody Robibero
91a9af95c2
Apply suggestions from code review
...
Co-authored-by: dkanada <dkanada@users.noreply.github.com>
4 years ago
crobibero
59ff2c5b4b
Add ability to mark query parameter as obsolete.
4 years ago
BaronGreenback
ab632b96fe
renamed.
4 years ago
BaronGreenback
82d365045a
Removed systemIp6 functionality.
4 years ago
BaronGreenback
821473557c
Changed mapping logic
4 years ago
BaronGreenback
6a7623da02
Simplified Code
4 years ago
BaronGreenback
8b2b3b77a5
Removed duplication
4 years ago
BaronGreenback
49e3b70722
Moved InternalsVisibleTo
4 years ago
BaronGreenback
b9f0f4f53b
reverted
4 years ago
BaronGreenback
688e7c6a2d
Moved internalVisibleToAttribute to .csj
4 years ago
crobibero
a087ab389a
dotnet 5.0.2
4 years ago
BaronGreenback
4bc8a1e77b
updated
4 years ago
BaronGreenback
9a730241b1
Changed to address.
4 years ago
BaronGreenback
d66bc3fb3e
Fixed indentation
4 years ago
BaronGreenback
08e83cfa54
Remove additional debug logging.
4 years ago
Bond_009
1ea2b200c0
JsonSerializer deserialize from bytes where possible
...
This is faster and uses way less memory
```
BenchmarkDotNet=v0.12.1, OS=fedora 32
Intel Core i7-6700HQ CPU 2.60GHz (Skylake), 1 CPU, 8 logical and 4 physical cores
.NET Core SDK=5.0.100
[Host] : .NET Core 5.0.0 (CoreCLR 5.0.20.51904, CoreFX 5.0.20.51904), X64 RyuJIT
DefaultJob : .NET Core 5.0.0 (CoreCLR 5.0.20.51904, CoreFX 5.0.20.51904), X64 RyuJIT
| Method | Mean | Error | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
|------- |---------:|--------:|--------:|--------:|------:|------:|----------:|
| Bytes | 158.4 us | 2.56 us | 2.14 us | 16.8457 | - | - | 52.08 KB |
| String | 172.8 us | 0.78 us | 0.70 us | 41.5039 | - | - | 127.82 KB |
| Custom | 155.5 us | 2.95 us | 2.76 us | 10.0098 | - | - | 31.27 KB |
```
4 years ago
BaronGreenback
2979c8dd37
Fixed test on Mac
4 years ago
BaronGreenback
35a30c9d09
Impliments KnownNetworks and KnownProxies
4 years ago
Joshua M. Boniface
406ae3e43a
Merge pull request #4709 from BaronGreenback/PluginDowngrade
4 years ago
dependabot[bot]
fdb3632e7a
Bump prometheus-net.AspNetCore from 4.0.0 to 4.1.1
...
Bumps [prometheus-net.AspNetCore](https://github.com/prometheus-net/prometheus-net ) from 4.0.0 to 4.1.1.
- [Release notes](https://github.com/prometheus-net/prometheus-net/releases )
- [Changelog](https://github.com/prometheus-net/prometheus-net/blob/master/History )
- [Commits](https://github.com/prometheus-net/prometheus-net/compare/v4.0.0...v4.1.1 )
Signed-off-by: dependabot[bot] <support@github.com>
4 years ago
dkanada
1327bd9f7d
Merge pull request #4787 from jellyfin/dependabot/nuget/prometheus-net-4.1.1
...
Bump prometheus-net from 4.0.0 to 4.1.1
4 years ago
Cody Robibero
5c57569692
Merge branch 'master' into PluginDowngrade
4 years ago
BaronGreenback
4c291da45c
Encoding fix for System Logs. ( #4564 )
4 years ago
dependabot[bot]
9460611fbb
Bump prometheus-net from 4.0.0 to 4.1.1
...
Bumps [prometheus-net](https://github.com/prometheus-net/prometheus-net ) from 4.0.0 to 4.1.1.
- [Release notes](https://github.com/prometheus-net/prometheus-net/releases )
- [Changelog](https://github.com/prometheus-net/prometheus-net/blob/master/History )
- [Commits](https://github.com/prometheus-net/prometheus-net/compare/v4.0.0...v4.1.1 )
Signed-off-by: dependabot[bot] <support@github.com>
4 years ago
crobibero
79cf57ce16
Remove SQLitePCLRaw.provider.sqlite3.netstandard11
4 years ago
BaronGreenback
889e988167
Updated to latest unstable.
4 years ago
crobibero
3a6501abe0
Fix another key collision in MigrateDisplayPreferencesDatabase
4 years ago
Claus Vium
21d2e9ff0c
Merge pull request #4771 from crobibero/typed-get-preference
...
Use typed UserManager GetPreference
4 years ago
Greenback
0337e39bae
Updated JsonDefaults
4 years ago
Joshua M. Boniface
4f6a585424
Merge pull request #4716 from OancaAndrei/syncplay-new-auth-policies
4 years ago
Claus Vium
a3a7467f49
Merge pull request #4713 from crobibero/robots
4 years ago
Claus Vium
8c00fbea9c
Merge pull request #4675 from BaronGreenback/ProxyDNS
4 years ago
crobibero
b670937c3d
Use typed UserManager GetPreference
4 years ago
Bond-009
b3caa51173
Merge pull request #4699 from crobibero/display_prefs_index
...
Fix CustomItemDisplayPreferences unique key collision in the migration
4 years ago
crobibero
69d581033b
Use a more descriptive middleware name
4 years ago
crobibero
34029f860c
Fix openapi file schema
4 years ago
crobibero
b66abf0556
Add support back for /emby and /mediabrowser routes
4 years ago
crobibero
aa5fa7cb8f
Update to dotnet 5.0.1
4 years ago
BaronGreenback
af37cc2339
Merge branch 'master' into ProxyDNS
4 years ago
Ionut Andrei Oanca
499f3ee950
Update authorization policies for SyncPlay
4 years ago
crobibero
d65e8d7044
Redirect robots.txt if hosting web content
4 years ago
crobibero
eefe87f537
Remove CustomItemDisplayPreferences unique key collision
4 years ago
BaronGreenback
1a44d34f50
Update ApiServiceCollectionExtensions.cs
4 years ago
Bond-009
804dd00425
Merge pull request #4671 from cvium/allow_proxy
...
Clear KnownNetworks and KnownProxies if none are configured explicitly
4 years ago
cvium
41cd4d0a39
Clear KnownNetworks and KnownProxies if none are configured explicitly
4 years ago
Joshua M. Boniface
bba01bf7b9
Merge pull request #3194 from OancaAndrei/syncplay-enhanced
...
SyncPlay for TV series (and Music)
4 years ago
Joshua M. Boniface
b96d4ef0e8
Merge pull request #4653 from crobibero/favorite-persons
...
Optimize FavoritePersons query
4 years ago
Joshua M. Boniface
4e6584c345
Merge pull request #4652 from crobibero/display-preferences
...
Add support for custom item display preferences
4 years ago
crobibero
76250a8895
Use md5 Guid for legacy compat
4 years ago
crobibero
3db6ae91f6
Add ItemId to all display preferences
4 years ago
Bond-009
3980b5ce9f
Merge pull request #4660 from crobibero/mime-type
...
Add support for web serving .mem files
4 years ago
crobibero
e49bb3f4e6
Add support for web serving .mem files
4 years ago
Ionut Andrei Oanca
23473ef8fb
Fix access policies to SyncPlay
4 years ago
crobibero
60b7e49a7f
Suggestions from code review
4 years ago