Don't add inbox as connection
This commit is contained in:
		
							parent
							
								
									a4d70d7e3a
								
							
						
					
					
						commit
						b2904bb1ba
					
				
					 6 changed files with 13 additions and 22 deletions
				
			
		|  | @ -56,13 +56,13 @@ impl ActorCache { | ||||||
|             .map(MaybeCached::Fetched) |             .map(MaybeCached::Fetched) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     pub(crate) async fn follower(&self, actor: Actor) -> Result<(), MyError> { |     pub(crate) async fn add_connection(&self, actor: Actor) -> Result<(), MyError> { | ||||||
|         self.db.add_listener(actor.id.clone()).await?; |         self.db.add_connection(actor.id.clone()).await?; | ||||||
|         self.db.save_actor(actor).await |         self.db.save_actor(actor).await | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     pub(crate) async fn unfollower(&self, actor: &Actor) -> Result<(), MyError> { |     pub(crate) async fn remove_connection(&self, actor: &Actor) -> Result<(), MyError> { | ||||||
|         self.db.remove_listener(actor.id.clone()).await |         self.db.remove_connection(actor.id.clone()).await | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     pub(crate) async fn get_no_cache( |     pub(crate) async fn get_no_cache( | ||||||
|  |  | ||||||
|  | @ -474,7 +474,7 @@ impl Db { | ||||||
|         .await |         .await | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     pub(crate) async fn remove_listener(&self, actor_id: Url) -> Result<(), MyError> { |     pub(crate) async fn remove_connection(&self, actor_id: Url) -> Result<(), MyError> { | ||||||
|         self.unblock(move |inner| { |         self.unblock(move |inner| { | ||||||
|             inner |             inner | ||||||
|                 .connected_actor_ids |                 .connected_actor_ids | ||||||
|  | @ -485,7 +485,7 @@ impl Db { | ||||||
|         .await |         .await | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     pub(crate) async fn add_listener(&self, actor_id: Url) -> Result<(), MyError> { |     pub(crate) async fn add_connection(&self, actor_id: Url) -> Result<(), MyError> { | ||||||
|         self.unblock(move |inner| { |         self.unblock(move |inner| { | ||||||
|             inner |             inner | ||||||
|                 .connected_actor_ids |                 .connected_actor_ids | ||||||
|  |  | ||||||
|  | @ -15,24 +15,16 @@ use std::{future::Future, pin::Pin}; | ||||||
| 
 | 
 | ||||||
| #[derive(Clone, Debug, serde::Deserialize, serde::Serialize)] | #[derive(Clone, Debug, serde::Deserialize, serde::Serialize)] | ||||||
| pub(crate) struct Follow { | pub(crate) struct Follow { | ||||||
|     is_listener: bool, |  | ||||||
|     input: AcceptedActivities, |     input: AcceptedActivities, | ||||||
|     actor: Actor, |     actor: Actor, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| impl Follow { | impl Follow { | ||||||
|     pub fn new(is_listener: bool, input: AcceptedActivities, actor: Actor) -> Self { |     pub fn new(input: AcceptedActivities, actor: Actor) -> Self { | ||||||
|         Follow { |         Follow { input, actor } | ||||||
|             is_listener, |  | ||||||
|             input, |  | ||||||
|             actor, |  | ||||||
|         } |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     async fn perform(self, state: JobState) -> Result<(), anyhow::Error> { |     async fn perform(self, state: JobState) -> Result<(), anyhow::Error> { | ||||||
|         if !self.is_listener { |  | ||||||
|             state.db.add_listener(self.actor.inbox.clone()).await?; |  | ||||||
|         } |  | ||||||
|         let my_id = state.config.generate_url(UrlKind::Actor); |         let my_id = state.config.generate_url(UrlKind::Actor); | ||||||
| 
 | 
 | ||||||
|         // if following relay directly, not just following 'public', followback
 |         // if following relay directly, not just following 'public', followback
 | ||||||
|  | @ -45,7 +37,7 @@ impl Follow { | ||||||
|                 .queue(Deliver::new(self.actor.inbox.clone(), follow)?)?; |                 .queue(Deliver::new(self.actor.inbox.clone(), follow)?)?; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         state.actors.follower(self.actor.clone()).await?; |         state.actors.add_connection(self.actor.clone()).await?; | ||||||
| 
 | 
 | ||||||
|         let accept = generate_accept_follow( |         let accept = generate_accept_follow( | ||||||
|             &state.config, |             &state.config, | ||||||
|  |  | ||||||
|  | @ -11,7 +11,7 @@ pub(crate) struct Reject(pub(crate) Actor); | ||||||
| 
 | 
 | ||||||
| impl Reject { | impl Reject { | ||||||
|     async fn perform(self, state: JobState) -> Result<(), anyhow::Error> { |     async fn perform(self, state: JobState) -> Result<(), anyhow::Error> { | ||||||
|         state.actors.unfollower(&self.0).await?; |         state.actors.remove_connection(&self.0).await?; | ||||||
| 
 | 
 | ||||||
|         let my_id = state.config.generate_url(UrlKind::Actor); |         let my_id = state.config.generate_url(UrlKind::Actor); | ||||||
|         let undo = generate_undo_follow(&state.config, &self.0.id, &my_id)?; |         let undo = generate_undo_follow(&state.config, &self.0.id, &my_id)?; | ||||||
|  |  | ||||||
|  | @ -21,7 +21,7 @@ impl Undo { | ||||||
|     async fn perform(self, state: JobState) -> Result<(), anyhow::Error> { |     async fn perform(self, state: JobState) -> Result<(), anyhow::Error> { | ||||||
|         let was_following = state.state.db.is_connected(self.actor.id.clone()).await?; |         let was_following = state.state.db.is_connected(self.actor.id.clone()).await?; | ||||||
| 
 | 
 | ||||||
|         state.actors.unfollower(&self.actor).await?; |         state.actors.remove_connection(&self.actor).await?; | ||||||
| 
 | 
 | ||||||
|         if was_following { |         if was_following { | ||||||
|             let my_id = state.config.generate_url(UrlKind::Actor); |             let my_id = state.config.generate_url(UrlKind::Actor); | ||||||
|  |  | ||||||
|  | @ -66,7 +66,7 @@ pub(crate) async fn route( | ||||||
|         ValidTypes::Announce | ValidTypes::Create => { |         ValidTypes::Announce | ValidTypes::Create => { | ||||||
|             handle_announce(&state, &jobs, input, actor).await? |             handle_announce(&state, &jobs, input, actor).await? | ||||||
|         } |         } | ||||||
|         ValidTypes::Follow => handle_follow(&config, &jobs, input, actor, is_connected).await?, |         ValidTypes::Follow => handle_follow(&config, &jobs, input, actor).await?, | ||||||
|         ValidTypes::Delete | ValidTypes::Update => handle_forward(&jobs, input, actor).await?, |         ValidTypes::Delete | ValidTypes::Update => handle_forward(&jobs, input, actor).await?, | ||||||
|         ValidTypes::Undo => handle_undo(&config, &jobs, input, actor, is_connected).await?, |         ValidTypes::Undo => handle_undo(&config, &jobs, input, actor, is_connected).await?, | ||||||
|     }; |     }; | ||||||
|  | @ -207,7 +207,6 @@ async fn handle_follow( | ||||||
|     jobs: &JobServer, |     jobs: &JobServer, | ||||||
|     input: AcceptedActivities, |     input: AcceptedActivities, | ||||||
|     actor: Actor, |     actor: Actor, | ||||||
|     is_listener: bool, |  | ||||||
| ) -> Result<(), MyError> { | ) -> Result<(), MyError> { | ||||||
|     let my_id: Url = config.generate_url(UrlKind::Actor); |     let my_id: Url = config.generate_url(UrlKind::Actor); | ||||||
| 
 | 
 | ||||||
|  | @ -217,7 +216,7 @@ async fn handle_follow( | ||||||
|         )?)); |         )?)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     jobs.queue(Follow::new(is_listener, input, actor))?; |     jobs.queue(Follow::new(input, actor))?; | ||||||
| 
 | 
 | ||||||
|     Ok(()) |     Ok(()) | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue