aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/lib/activitypub
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2018-11-15 16:18:12 +0100
committerChocobozzz <me@florianbigard.com>2018-11-15 16:38:37 +0100
commit030177d246834fdba89be9bbaeac497589b47102 (patch)
treea0c5b2e59aeb01322cff9042ceb31d49aadda908 /server/lib/activitypub
parent650e3d5ce380026cc79bcd271915cf7e6f51c24c (diff)
downloadPeerTube-030177d246834fdba89be9bbaeac497589b47102.tar.gz
PeerTube-030177d246834fdba89be9bbaeac497589b47102.tar.zst
PeerTube-030177d246834fdba89be9bbaeac497589b47102.zip
Don't forward view, send updates instead
To avoid inconsistencies in the federation, now the origin server will tell other instances what is the correct number of views
Diffstat (limited to 'server/lib/activitypub')
-rw-r--r--server/lib/activitypub/process/process-create.ts16
1 files changed, 4 insertions, 12 deletions
diff --git a/server/lib/activitypub/process/process-create.ts b/server/lib/activitypub/process/process-create.ts
index 920d02cd2..214e14546 100644
--- a/server/lib/activitypub/process/process-create.ts
+++ b/server/lib/activitypub/process/process-create.ts
@@ -13,7 +13,8 @@ import { forwardVideoRelatedActivity } from '../send/utils'
13import { Redis } from '../../redis' 13import { Redis } from '../../redis'
14import { createOrUpdateCacheFile } from '../cache-file' 14import { createOrUpdateCacheFile } from '../cache-file'
15import { immutableAssign } from '../../../tests/utils' 15import { immutableAssign } from '../../../tests/utils'
16import { getVideoDislikeActivityPubUrl, getVideoLikeActivityPubUrl } from '../url' 16import { getVideoDislikeActivityPubUrl } from '../url'
17import { VideoModel } from '../../../models/video/video'
17 18
18async function processCreateActivity (activity: ActivityCreate, byActor: ActorModel) { 19async function processCreateActivity (activity: ActivityCreate, byActor: ActorModel) {
19 const activityObject = activity.object 20 const activityObject = activity.object
@@ -87,19 +88,10 @@ async function processCreateDislike (byActor: ActorModel, activity: ActivityCrea
87async function processCreateView (byActor: ActorModel, activity: ActivityCreate) { 88async function processCreateView (byActor: ActorModel, activity: ActivityCreate) {
88 const view = activity.object as ViewObject 89 const view = activity.object as ViewObject
89 90
90 const options = { 91 const video = await VideoModel.loadByUrl(view.object)
91 videoObject: view.object, 92 if (!video || video.isOwned() === false) return
92 fetchType: 'only-video' as 'only-video'
93 }
94 const { video } = await getOrCreateVideoAndAccountAndChannel(options)
95 93
96 await Redis.Instance.addVideoView(video.id) 94 await Redis.Instance.addVideoView(video.id)
97
98 if (video.isOwned()) {
99 // Don't resend the activity to the sender
100 const exceptions = [ byActor ]
101 await forwardVideoRelatedActivity(activity, undefined, exceptions, video)
102 }
103} 95}
104 96
105async function processCacheFile (byActor: ActorModel, activity: ActivityCreate) { 97async function processCacheFile (byActor: ActorModel, activity: ActivityCreate) {