There's a report about a nightly "crash" when users download, compile
from source, and replace their distro's mindlnad binary. This is because
the Debian package includes a patch that uses SIGUSR2 to reopen the log
file and sends SIGUSR2 from logrotate instead of just using the
"copytruncate" logrotate option. Then logrotate sends SIGUSR2 at 6:25AM,
which causes us to abort due to the unhandled signal.
I don't want to sacrifice SIGUSR2 just for log rotation, especially when
we already do some reload operations on SIGHUP. So to avoid this
Debian/Ubuntu issue, we'll explicitly ignore SIGUSR2, and add log file
reopening to the SIGHUP handler. Then hopefully a future Debian package
version will remove the SIGUSR2 patch and use SIGHUP instead (or
copytruncate).
Fixes: SF Bug #313 (log rotation kills minidlna service)
The Control4 app apparently sends us badly-formatted SearchCriteria,
where they don't quote the upnp:class value. So we'll add it in for them
if we detect that situation.
Fixes: SF Patches #173 (DLNA search query not as minidlna expects)
There's no point in returning bookmark info without a bookmark. It also
has been reported that certain Samsung models may have issues with
subtitles if we send dcmInfo data. So we'll only return it if we have a
bookmark set.
[minidlna:support-requests] #52 External srt subtitles for Samsung UA48JU7800
Add back SSDP filtering. Relying on the kernel to filter out multicast
traffic from non-member interfaces simply doesn't work the way many
people think it does, so we need to re-introduce manual filtering. But
this time we will use in_pktinfo's ifindex for comparison rather than a
netmask comparison, so SSDP packets from other subnets should still work.
Add the ability to force title modification for clients that do their own
alphanumeric sorting. Adding a '!' to the beginning of the
force_sort_criteria value will enable this behavior.
It is implemented by prepending all titles with a zero-padded number, and
possibly season and episode (or disc and track) numbers if they aren't
already in the title.
Fix several issues with the non-destructive rescan functionality.
Most of these issues also affected inotify scanning as well. These
include annoying debug messages, adding album art for files that we
aren't supposed to be scanning anyway, incrementing the UpdateID when no
changes were made to the database, and other smaller issues.
Some Samsung clients (at least UE40ES8000) apparently cannot handle our
standard container IDs when we turn on the DCM10 feature. So they end up
requesting an empty ObjectID, which is invalid. If we blindly return our
root container, they still have problems browsing because they only use
one object from our returned results, so they don't get a full list of
browseable categories.
It has been confirmed that we can work around this by using the same
ObjectIDs that Samsung uses for our root containers in our
X_GetFeatureList response (A, V, and I). And fortunately it's trivial to
handle these renamed ObjectIDs using our magic container system.
Fixes: SF Bug #311 (Samsung TV built-in DLNA client broken since v1.1.5)
Protect against DoS by limiting the number of subscribers we allow to a
total of 500, and immediately removing subscribers from our list if we
encounter an error communicating with them.
Bolt (Series6) seems to have a bug where it only reacts to
_tivo-videostream._tcp service types after a TiVo reboot, and ignores
_tivo-vidoes._tcp. I have no idea what the difference is supposed to be
because it's undocumented, but either type works on both Roamio (Series5)
and Bolt, so hopefully it's safe for Series 3 and 4 also.
Add support for upnp:playbackCount and upnp:lastPlaybackPosition tags.
These are used by Kodi to keep track of bookmark information as well as
determining whether to show the checkmark to indicate that the video
has been played.
Also add support for the UpdateObject command, which Kodi uses to
update the playbackCount and lastPlaybackPosition information.
This change requires a DB schema update, which should be done
automatically on the first run.
Inspired by SF user Karsten's patch #167.
From SF user Andrea Odetti:
The Samsung BD J5500 player does not accept some of the DLNA_PN values
used by minidlna for *.mp4 files.
For instance AVC_MP4_MP_HD_720p_AAC and AVC_MP4_BL_L31_HD_AAC are
problematic as the player would simply ignore the files and not show
them.
AVC_MP4_HP_HD_AAC works.
All the files play normally from a USB key.
I've noticed as well that NULL works always, and this is the approach I
have followed.
So I changed minidlna and added a flag to disable DLNA_PN, and this
flag is only used for a Samsung BD J5500 in order not to break other
players, which can handle DLNA_PN properly.
So when a J5500 is connected we simply set DLNA_PN to NULL and
everything works well.
FFmpeg 3.0, as used on Ubuntu Yakkety, did not include the codecpar
changes, although it uses the same library major version. So refine the
libavformat version check to sort that out.
Reporting Samsung features to Windows and AllShare somehow makes them
ignore us, so detect these client types specifically and don't expose
Samsung capabilities to them.
Add FLAG_CAPTION_RES to the modern Samsung profile. Older Samsung
devices used a custom method for describing subtitles, but apparently
Series J no longer supports it. The good thing is, they now support
the more standard method (and probably have been for a while, since it
works on my old Series D BDP).
So let's just expose both methods to the client, since everything should
be able to handle it.
Fixes: SF bug #113 (Subtitles support for new 2015 Samsung J series TV)
We shouldn't blindly set the LC_CTYPE to en_US.utf8, because the user may
not have it installed. So if the user already has a utf8 locale defined,
just use it for LC_CTYPE.
Fixed: SF Bug #87 (Problem of accentuation)
Some types of bad FLAC files error out early in the metadata parsing phase,
and we weren't properly deleting the iterator if it errored out at that
point.
Based on a patch from SF user pasdVn <pasdVn3@gmx.de>.
Rely on the kernel to filter out multicasts from non-member interfaces.
Also get the address of the interface we received the multicast on using
sockopt IP_PKTINFO.
Closes: SF Patch ticket #77.
SF patch #140 (`check_embedded_art` not called when Cover Art at end of file)
Using MP4Box, the Cover Art is added after the video stream.
Thanks Mathieu Malaterre.
From SF Patch #90:
My LG TV (42LE5500) retrieves items from BrowseDirectChildren in a weird way.
The TV can only display up to 20 items per page, but it sets RequestedCount to
54. StartingIndex is correctly set to 0, 20, 40, ... etc. When minidlna responds
with the 54 entries, the TV sorts folders (containers) first, before items, then
displays the entries, limited to 20 per page.
In my setup, I have ~23 folders whose names are similar to the files, so that
when sorting by name, the folders are mixed with the files, thereby resulting in
duplicate folders appearing on all 3 pages and many missing files. The solution
is to make sure minidlna orders items the same way that the TV expects them, so
that when the StartingIndex is 20 or more, we return the "correct" subset of
items.
Thanks SF user Darell Tan for the fix.
SubmitServicesToMiniSSDPD(lan_addr[0].str, runtime_vars.port)
is called before lan_addr[0].str get a proper value.
Patch add call to reload_ifaces() in order to fix that
see miniupnp forum post http://miniupnp.tuxfamily.org/forum/viewtopic.php?t=1801
Thanks Thomas Bernard for this fix.
We were missing a return in one of the cases for the switch.
Patch #150 from user Shrimpkin.
Fixes: Support Request #40 (Inotify don't work when add *.mts video)