mirror of
				https://github.com/coturn/coturn.git
				synced 2025-10-30 22:40:59 +01:00 
			
		
		
		
	created netengine.c get_relay_server utility method to reduce code duplication (#1032)
This commit is contained in:
		
							parent
							
								
									baa69d0815
								
							
						
					
					
						commit
						a7316a3d30
					
				| @ -67,6 +67,8 @@ static struct auth_server authserver[256]; | ||||
| static struct relay_server *general_relay_servers[1+((turnserver_id)-1)]; | ||||
| static struct relay_server *udp_relay_servers[1+((turnserver_id)-1)]; | ||||
| 
 | ||||
| static struct relay_server* get_relay_server(turnserver_id id); | ||||
| 
 | ||||
| //////////////////////////////////////////////
 | ||||
| 
 | ||||
| static void run_events(struct event_base *eb, ioa_engine_handle e); | ||||
| @ -441,6 +443,42 @@ static void allocate_relay_addrs_ports(void) { | ||||
| 
 | ||||
| static int handle_relay_message(relay_server_handle rs, struct message_to_relay *sm); | ||||
| 
 | ||||
| static struct relay_server* get_relay_server(turnserver_id id) { | ||||
| 	struct relay_server *rs = NULL; | ||||
| 	if(id>=TURNSERVER_ID_BOUNDARY_BETWEEN_TCP_AND_UDP) { | ||||
| 		size_t dest = id-TURNSERVER_ID_BOUNDARY_BETWEEN_TCP_AND_UDP; | ||||
| 		if(dest >= get_real_udp_relay_servers_number()) { | ||||
| 			TURN_LOG_FUNC( | ||||
| 					TURN_LOG_LEVEL_ERROR, | ||||
| 					"%s: Too large UDP relay number: %d, total=%d\n", | ||||
| 					__FUNCTION__,(int)dest,(int)get_real_udp_relay_servers_number()); | ||||
| 		} | ||||
| 		rs = udp_relay_servers[dest]; | ||||
| 		if(!rs) { | ||||
| 			TURN_LOG_FUNC( | ||||
| 				TURN_LOG_LEVEL_ERROR, | ||||
| 					"%s: Wrong UDP relay number: %d, total=%d\n", | ||||
| 					__FUNCTION__,(int)dest,(int)get_real_udp_relay_servers_number()); | ||||
| 		} | ||||
| 	} else { | ||||
| 		size_t dest = id; | ||||
| 		if(dest >= get_real_general_relay_servers_number()) { | ||||
| 			TURN_LOG_FUNC( | ||||
| 					TURN_LOG_LEVEL_ERROR, | ||||
| 					"%s: Too large general relay number: %d, total=%d\n", | ||||
| 					__FUNCTION__,(int)dest,(int)get_real_general_relay_servers_number()); | ||||
| 		} | ||||
| 		rs = general_relay_servers[dest]; | ||||
| 		if(!rs) { | ||||
| 			TURN_LOG_FUNC( | ||||
| 				TURN_LOG_LEVEL_ERROR, | ||||
| 				"%s: Wrong general relay number: %d, total=%d\n", | ||||
| 				__FUNCTION__,(int)dest,(int)get_real_general_relay_servers_number()); | ||||
| 		} | ||||
| 	} | ||||
| 	return rs; | ||||
| } | ||||
| 
 | ||||
| static pthread_mutex_t auth_message_counter_mutex = PTHREAD_MUTEX_INITIALIZER; | ||||
| static authserver_id auth_message_counter = 1; | ||||
| 
 | ||||
| @ -481,42 +519,15 @@ static void auth_server_receive_message(struct bufferevent *bev, void *ptr) | ||||
|     	  am.success = 1; | ||||
|       } | ||||
|     } | ||||
|      | ||||
|     size_t dest = am.id; | ||||
|      | ||||
| 
 | ||||
|     struct evbuffer *output = NULL; | ||||
|      | ||||
|     if(dest>=TURNSERVER_ID_BOUNDARY_BETWEEN_TCP_AND_UDP) { | ||||
|       dest -= TURNSERVER_ID_BOUNDARY_BETWEEN_TCP_AND_UDP; | ||||
|       if(dest >= get_real_udp_relay_servers_number()) { | ||||
|     	  TURN_LOG_FUNC( | ||||
| 		      TURN_LOG_LEVEL_ERROR, | ||||
| 		      "%s: Too large UDP relay number: %d\n", | ||||
| 		      __FUNCTION__,(int)dest); | ||||
|       } else if(!(udp_relay_servers[dest])) { | ||||
|     	  TURN_LOG_FUNC( | ||||
|     	  	TURN_LOG_LEVEL_ERROR, | ||||
|     	  	"%s: Wrong UDP relay number: %d, total %d\n", | ||||
|     	  	__FUNCTION__,(int)dest, (int)get_real_udp_relay_servers_number()); | ||||
|       } else { | ||||
|     	  output = bufferevent_get_output(udp_relay_servers[dest]->auth_out_buf); | ||||
|       } | ||||
|     } else { | ||||
|       if(dest >= get_real_general_relay_servers_number()) { | ||||
|     	  TURN_LOG_FUNC( | ||||
| 		      TURN_LOG_LEVEL_ERROR, | ||||
| 		      "%s: Too large general relay number: %d, total %d\n", | ||||
| 		      __FUNCTION__,(int)dest,(int)get_real_general_relay_servers_number()); | ||||
|       } else if(!(general_relay_servers[dest])) { | ||||
|     	  TURN_LOG_FUNC( | ||||
|     	  		      TURN_LOG_LEVEL_ERROR, | ||||
|     	  		      "%s: Wrong general relay number: %d, total %d\n", | ||||
|     	  		      __FUNCTION__,(int)dest,(int)get_real_general_relay_servers_number()); | ||||
|       } else { | ||||
|     	  output = bufferevent_get_output(general_relay_servers[dest]->auth_out_buf); | ||||
|       } | ||||
|     } | ||||
|      | ||||
| 	struct relay_server* relay_server = get_relay_server(am.id); | ||||
| 	if(relay_server) { | ||||
| 		output = bufferevent_get_output(relay_server->auth_out_buf); | ||||
| 	} else { | ||||
|     	TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: can't find relay for turn_server_id: %d\n", __FUNCTION__,(int)am.id); | ||||
| 	} | ||||
| 
 | ||||
|     if(output) | ||||
|       evbuffer_add(output,&am,sizeof(struct auth_message)); | ||||
|     else { | ||||
| @ -585,41 +596,10 @@ static int send_socket_to_relay(turnserver_id id, uint64_t cid, stun_tid *tid, i | ||||
| 
 | ||||
| 	ioa_socket_handle s_to_delete = s; | ||||
| 
 | ||||
| 	struct relay_server *rs = NULL; | ||||
| 	if(id>=TURNSERVER_ID_BOUNDARY_BETWEEN_TCP_AND_UDP) { | ||||
| 		size_t dest = id-TURNSERVER_ID_BOUNDARY_BETWEEN_TCP_AND_UDP; | ||||
| 		if(dest >= get_real_udp_relay_servers_number()) { | ||||
| 			TURN_LOG_FUNC( | ||||
| 					TURN_LOG_LEVEL_ERROR, | ||||
| 					"%s: Too large UDP relay number: %d, rmt=%d, total=%d\n", | ||||
| 					__FUNCTION__,(int)dest,(int)rmt, (int)get_real_udp_relay_servers_number()); | ||||
| 			goto err; | ||||
| 		} | ||||
| 		rs = udp_relay_servers[dest]; | ||||
| 		if(!rs) { | ||||
| 			TURN_LOG_FUNC( | ||||
| 				TURN_LOG_LEVEL_ERROR, | ||||
| 					"%s: Wrong UDP relay number: %d, rmt=%d, total=%d\n", | ||||
| 					__FUNCTION__,(int)dest,(int)rmt, (int)get_real_udp_relay_servers_number()); | ||||
| 			goto err; | ||||
| 		} | ||||
| 	} else { | ||||
| 		size_t dest = id; | ||||
| 		if(dest >= get_real_general_relay_servers_number()) { | ||||
| 			TURN_LOG_FUNC( | ||||
| 					TURN_LOG_LEVEL_ERROR, | ||||
| 					"%s: Too large general relay number: %d, rmt=%d, total=%d\n", | ||||
| 					__FUNCTION__,(int)dest,(int)rmt, (int)get_real_general_relay_servers_number()); | ||||
| 			goto err; | ||||
| 		} | ||||
| 		rs = general_relay_servers[dest]; | ||||
| 		if(!rs) { | ||||
| 			TURN_LOG_FUNC( | ||||
| 				TURN_LOG_LEVEL_ERROR, | ||||
| 				"%s: Wrong general relay number: %d, rmt=%d, total=%d\n", | ||||
| 				__FUNCTION__,(int)dest,(int)rmt, (int)get_real_general_relay_servers_number()); | ||||
| 			goto err; | ||||
| 		} | ||||
| 	struct relay_server *rs = get_relay_server(id); | ||||
| 	if(!rs) { | ||||
| 		TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: can't find relay for turn_server_id: %d\n", __FUNCTION__,(int)id); | ||||
| 		goto err; | ||||
| 	} | ||||
| 
 | ||||
| 	switch (rmt) { | ||||
| @ -716,45 +696,11 @@ int send_session_cancellation_to_relay(turnsession_id sid) | ||||
| 
 | ||||
| 	turnserver_id id = (turnserver_id)(sid / TURN_SESSION_ID_FACTOR); | ||||
| 
 | ||||
| 	struct relay_server *rs = NULL; | ||||
| 	if(id>=TURNSERVER_ID_BOUNDARY_BETWEEN_TCP_AND_UDP) { | ||||
| 		size_t dest = id-TURNSERVER_ID_BOUNDARY_BETWEEN_TCP_AND_UDP; | ||||
| 		if(dest >= get_real_udp_relay_servers_number()) { | ||||
| 			TURN_LOG_FUNC( | ||||
| 					TURN_LOG_LEVEL_ERROR, | ||||
| 					"%s: Too large UDP relay number: %d, total=%d\n", | ||||
| 					__FUNCTION__,(int)dest,(int)get_real_udp_relay_servers_number()); | ||||
| 			ret = -1; | ||||
| 			goto err; | ||||
| 		} | ||||
| 		rs = udp_relay_servers[dest]; | ||||
| 		if(!rs) { | ||||
| 			TURN_LOG_FUNC( | ||||
| 				TURN_LOG_LEVEL_ERROR, | ||||
| 					"%s: Wrong UDP relay number: %d, total=%d\n", | ||||
| 					__FUNCTION__,(int)dest,(int)get_real_udp_relay_servers_number()); | ||||
| 			ret = -1; | ||||
| 			goto err; | ||||
| 		} | ||||
| 	} else { | ||||
| 		size_t dest = id; | ||||
| 		if(dest >= get_real_general_relay_servers_number()) { | ||||
| 			TURN_LOG_FUNC( | ||||
| 					TURN_LOG_LEVEL_ERROR, | ||||
| 					"%s: Too large general relay number: %d, total=%d\n", | ||||
| 					__FUNCTION__,(int)dest,(int)get_real_general_relay_servers_number()); | ||||
| 			ret = -1; | ||||
| 			goto err; | ||||
| 		} | ||||
| 		rs = general_relay_servers[dest]; | ||||
| 		if(!rs) { | ||||
| 			TURN_LOG_FUNC( | ||||
| 				TURN_LOG_LEVEL_ERROR, | ||||
| 				"%s: Wrong general relay number: %d, total=%d\n", | ||||
| 				__FUNCTION__,(int)dest,(int)get_real_general_relay_servers_number()); | ||||
| 			ret = -1; | ||||
| 			goto err; | ||||
| 		} | ||||
| 	struct relay_server *rs = get_relay_server(id); | ||||
| 	if(!rs) { | ||||
|     	TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: can't find relay for turn_server_id: %d\n", __FUNCTION__,(int)id); | ||||
| 		ret = -1; | ||||
| 		goto err; | ||||
| 	} | ||||
| 
 | ||||
| 	sm.relay_server = rs; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user