mirror of
				https://github.com/coturn/coturn.git
				synced 2025-10-31 06:51:30 +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 *general_relay_servers[1+((turnserver_id)-1)]; | ||||||
| static struct relay_server *udp_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); | 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 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 pthread_mutex_t auth_message_counter_mutex = PTHREAD_MUTEX_INITIALIZER; | ||||||
| static authserver_id auth_message_counter = 1; | 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; |     	  am.success = 1; | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|      | 
 | ||||||
|     size_t dest = am.id; |  | ||||||
|      |  | ||||||
|     struct evbuffer *output = NULL; |     struct evbuffer *output = NULL; | ||||||
|      | 	struct relay_server* relay_server = get_relay_server(am.id); | ||||||
|     if(dest>=TURNSERVER_ID_BOUNDARY_BETWEEN_TCP_AND_UDP) { | 	if(relay_server) { | ||||||
|       dest -= TURNSERVER_ID_BOUNDARY_BETWEEN_TCP_AND_UDP; | 		output = bufferevent_get_output(relay_server->auth_out_buf); | ||||||
|       if(dest >= get_real_udp_relay_servers_number()) { | 	} else { | ||||||
|     	  TURN_LOG_FUNC( |     	TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: can't find relay for turn_server_id: %d\n", __FUNCTION__,(int)am.id); | ||||||
| 		      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); |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|      |  | ||||||
|     if(output) |     if(output) | ||||||
|       evbuffer_add(output,&am,sizeof(struct auth_message)); |       evbuffer_add(output,&am,sizeof(struct auth_message)); | ||||||
|     else { |     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; | 	ioa_socket_handle s_to_delete = s; | ||||||
| 
 | 
 | ||||||
| 	struct relay_server *rs = NULL; | 	struct relay_server *rs = get_relay_server(id); | ||||||
| 	if(id>=TURNSERVER_ID_BOUNDARY_BETWEEN_TCP_AND_UDP) { | 	if(!rs) { | ||||||
| 		size_t dest = id-TURNSERVER_ID_BOUNDARY_BETWEEN_TCP_AND_UDP; | 		TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: can't find relay for turn_server_id: %d\n", __FUNCTION__,(int)id); | ||||||
| 		if(dest >= get_real_udp_relay_servers_number()) { | 		goto err; | ||||||
| 			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; |  | ||||||
| 		} |  | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	switch (rmt) { | 	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); | 	turnserver_id id = (turnserver_id)(sid / TURN_SESSION_ID_FACTOR); | ||||||
| 
 | 
 | ||||||
| 	struct relay_server *rs = NULL; | 	struct relay_server *rs = get_relay_server(id); | ||||||
| 	if(id>=TURNSERVER_ID_BOUNDARY_BETWEEN_TCP_AND_UDP) { | 	if(!rs) { | ||||||
| 		size_t dest = id-TURNSERVER_ID_BOUNDARY_BETWEEN_TCP_AND_UDP; |     	TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: can't find relay for turn_server_id: %d\n", __FUNCTION__,(int)id); | ||||||
| 		if(dest >= get_real_udp_relay_servers_number()) { | 		ret = -1; | ||||||
| 			TURN_LOG_FUNC( | 		goto err; | ||||||
| 					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; |  | ||||||
| 		} |  | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	sm.relay_server = rs; | 	sm.relay_server = rs; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user