diff --git a/cmd/serve/dlna/dlna.go b/cmd/serve/dlna/dlna.go index 4c2837217..579d695d8 100644 --- a/cmd/serve/dlna/dlna.go +++ b/cmd/serve/dlna/dlna.go @@ -118,7 +118,7 @@ func newServer(f fs.Fs, opt *dlnaflags.Options) (*server, error) { } s := &server{ - AnnounceInterval: 10 * time.Second, + AnnounceInterval: opt.AnnounceInterval, FriendlyName: friendlyName, RootDeviceUUID: makeDeviceUUID(friendlyName), Interfaces: interfaces, diff --git a/cmd/serve/dlna/dlnaflags/dlnaflags.go b/cmd/serve/dlna/dlnaflags/dlnaflags.go index 85a1347dc..10745474c 100644 --- a/cmd/serve/dlna/dlnaflags/dlnaflags.go +++ b/cmd/serve/dlna/dlnaflags/dlnaflags.go @@ -2,6 +2,8 @@ package dlnaflags import ( + "time" + "github.com/rclone/rclone/fs/config/flags" "github.com/rclone/rclone/fs/rc" "github.com/spf13/pflag" @@ -24,18 +26,20 @@ logging of all UPNP traffic. // Options is the type for DLNA serving options. type Options struct { - ListenAddr string - FriendlyName string - LogTrace bool - InterfaceNames []string + ListenAddr string + FriendlyName string + LogTrace bool + InterfaceNames []string + AnnounceInterval time.Duration } // DefaultOpt contains the defaults options for DLNA serving. var DefaultOpt = Options{ - ListenAddr: ":7879", - FriendlyName: "", - LogTrace: false, - InterfaceNames: []string{}, + ListenAddr: ":7879", + FriendlyName: "", + LogTrace: false, + InterfaceNames: []string{}, + AnnounceInterval: 12 * time.Minute, } // Opt contains the options for DLNA serving. @@ -49,6 +53,7 @@ func addFlagsPrefix(flagSet *pflag.FlagSet, prefix string, Opt *Options) { flags.StringVarP(flagSet, &Opt.FriendlyName, prefix+"name", "", Opt.FriendlyName, "Name of DLNA server") flags.BoolVarP(flagSet, &Opt.LogTrace, prefix+"log-trace", "", Opt.LogTrace, "Enable trace logging of SOAP traffic") flags.StringArrayVarP(flagSet, &Opt.InterfaceNames, prefix+"interface", "", Opt.InterfaceNames, "The interface to use for SSDP (repeat as necessary)") + flags.DurationVarP(flagSet, &Opt.AnnounceInterval, prefix+"announce-interval", "", Opt.AnnounceInterval, "The interval between SSDP announcements") } // AddFlags add the command line flags for DLNA serving. diff --git a/docs/content/commands/rclone_serve_dlna.md b/docs/content/commands/rclone_serve_dlna.md index 0343debb4..9ab1e83b9 100644 --- a/docs/content/commands/rclone_serve_dlna.md +++ b/docs/content/commands/rclone_serve_dlna.md @@ -32,6 +32,11 @@ IPs. Use `--name` to choose the friendly server name, which is by default "rclone (hostname)". +Use `--announce-interval` to specify the interval at which SSDP server +announce devices and services. Larger active announcement intervals help +keep the multicast domain clean, this value does not affect unicast +responses to `M-SEARCH` requests from other devices. + Use `--log-trace` in conjunction with `-vv` to enable additional debug logging of all UPNP traffic.