mirror of
https://github.com/rclone/rclone.git
synced 2024-12-23 07:29:35 +01:00
cache: reconnect plex websocket on failures
This commit is contained in:
parent
13ccb39819
commit
339fbf0df5
4
backend/cache/handle.go
vendored
4
backend/cache/handle.go
vendored
@ -147,10 +147,8 @@ func (r *Handle) scaleWorkers(desired int) {
|
||||
|
||||
func (r *Handle) confirmExternalReading() {
|
||||
// if we have a max value of workers
|
||||
// or there's no external confirmation available
|
||||
// then we skip this step
|
||||
if len(r.workers) > 1 ||
|
||||
!r.cacheFs().plexConnector.isConnected() {
|
||||
if len(r.workers) > 1 {
|
||||
return
|
||||
}
|
||||
if !r.cacheFs().plexConnector.isPlaying(r.cachedObject) {
|
||||
|
10
backend/cache/plex.go
vendored
10
backend/cache/plex.go
vendored
@ -107,6 +107,9 @@ func (p *plexConnector) closeWebsocket() {
|
||||
}
|
||||
|
||||
func (p *plexConnector) listenWebsocket() {
|
||||
p.runningMu.Lock()
|
||||
defer p.runningMu.Unlock()
|
||||
|
||||
u := strings.Replace(p.url.String(), "http://", "ws://", 1)
|
||||
u = strings.Replace(u, "https://", "wss://", 1)
|
||||
conn, err := websocket.Dial(fmt.Sprintf(defPlexNotificationURL, strings.TrimRight(u, "/"), p.token),
|
||||
@ -127,8 +130,8 @@ func (p *plexConnector) listenWebsocket() {
|
||||
err := websocket.JSON.Receive(conn, notif)
|
||||
if err != nil {
|
||||
fs.Debugf("plex", "%v", err)
|
||||
time.Sleep(time.Second)
|
||||
continue
|
||||
p.closeWebsocket()
|
||||
break
|
||||
}
|
||||
// we're only interested in play events
|
||||
if notif.Container.Type == "playing" {
|
||||
@ -229,6 +232,9 @@ func (p *plexConnector) isConfigured() bool {
|
||||
|
||||
func (p *plexConnector) isPlaying(co *Object) bool {
|
||||
var err error
|
||||
if !p.isConnected() {
|
||||
p.listenWebsocket()
|
||||
}
|
||||
|
||||
remote := co.Remote()
|
||||
if cr, yes := p.f.isWrappedByCrypt(); yes {
|
||||
|
Loading…
Reference in New Issue
Block a user