mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 10:47:18 +00:00 
			
		
		
		
	Set TCP_NODELAY on manager TCP sockets to prevent delays on outgoing packets. This regression was introduced in r48338.
AST-359 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@273270 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		| @@ -4604,11 +4604,26 @@ static void *session_do(void *data) | ||||
| 	}; | ||||
| 	int flags; | ||||
| 	int res; | ||||
|   	struct protoent *p; | ||||
|  | ||||
| 	if (session == NULL) { | ||||
| 		goto done; | ||||
| 	} | ||||
|  | ||||
|  	/* XXX here we set TCP_NODELAY on the socket to disable Nagle's | ||||
|  	 * algorithm.  A better solution might be to buffer outgoing messages | ||||
|  	 * until they are complete then write them to the socket in one burst | ||||
|  	 * rather than sending them in bits and pieces. */ | ||||
|   	p = getprotobyname("tcp"); | ||||
|   	if (p) { | ||||
|   		int arg = 1; | ||||
|   		if( setsockopt(ser->fd, p->p_proto, TCP_NODELAY, (char *)&arg, sizeof(arg) ) < 0 ) { | ||||
|   			ast_log(LOG_WARNING, "Failed to set manager tcp connection to TCP_NODELAY mode: %s\nSome manager actions may be slow to respond.\n", strerror(errno)); | ||||
|   		} | ||||
|   	} else { | ||||
|   		ast_log(LOG_WARNING, "Failed to set manager tcp connection to TCP_NODELAY, getprotobyname(\"tcp\") failed\nSome manager actions may be slow to respond.\n"); | ||||
|   	} | ||||
|  | ||||
| 	flags = fcntl(ser->fd, F_GETFL); | ||||
| 	if (!block_sockets) { /* make sure socket is non-blocking */ | ||||
| 		flags |= O_NONBLOCK; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user