Fix unbounded recursion in post discovery (#23506)
* Add a limit to how many posts can get fetched as a result of a single request * Add tests * Always pass `request_id` when processing `Announce` activities --------- Co-authored-by: nametoolong <nametoolong@users.noreply.github.com>
This commit is contained in:
		
					parent
					
						
							
								719bb799be
							
						
					
				
			
			
				commit
				
					
						0c9eac80d8
					
				
			
		
					 12 changed files with 126 additions and 22 deletions
				
			
		|  | @ -327,18 +327,18 @@ class ActivityPub::Activity::Create < ActivityPub::Activity | |||
|   def resolve_thread(status) | ||||
|     return unless status.reply? && status.thread.nil? && Request.valid_url?(in_reply_to_uri) | ||||
| 
 | ||||
|     ThreadResolveWorker.perform_async(status.id, in_reply_to_uri) | ||||
|     ThreadResolveWorker.perform_async(status.id, in_reply_to_uri, { 'request_id' => @options[:request_id]}) | ||||
|   end | ||||
| 
 | ||||
|   def fetch_replies(status) | ||||
|     collection = @object['replies'] | ||||
|     return if collection.nil? | ||||
| 
 | ||||
|     replies = ActivityPub::FetchRepliesService.new.call(status, collection, false) | ||||
|     replies = ActivityPub::FetchRepliesService.new.call(status, collection, allow_synchronous_requests: false, request_id: @options[:request_id]) | ||||
|     return unless replies.nil? | ||||
| 
 | ||||
|     uri = value_or_id(collection) | ||||
|     ActivityPub::FetchRepliesWorker.perform_async(status.id, uri) unless uri.nil? | ||||
|     ActivityPub::FetchRepliesWorker.perform_async(status.id, uri, { 'request_id' => @options[:request_id]}) unless uri.nil? | ||||
|   end | ||||
| 
 | ||||
|   def conversation_from_uri(uri) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue