diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2003-03-20 17:21:54 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2003-03-20 17:21:54 +0000 |
commit | 3d4c6ea82a08d9703653f7d8838fabef81da63b6 (patch) | |
tree | 000f12071b6f97c254068faa7c82566df7f986d1 /manager.c | |
parent | b8540d24188d6f657c28b842c0d32fa1e60af3c6 (diff) |
Merge some of Mahmut's patches
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@666 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'manager.c')
-rwxr-xr-x | manager.c | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -16,8 +16,11 @@ #include <pthread.h> #include <string.h> #include <sys/time.h> +#include <sys/types.h> +#include <netdb.h> #include <sys/socket.h> #include <netinet/in.h> +#include <netinet/tcp.h> #include <arpa/inet.h> #include <signal.h> #include <errno.h> @@ -432,6 +435,7 @@ static int process_message(struct mansession *s, struct message *m) struct manager_action *tmp = first_action; strncpy(action, get_header(m, "Action"), sizeof(action)); + ast_log( LOG_DEBUG, "Manager received command '%s'\n", action ); if (!strlen(action)) { send_error(s, "Missing action in request"); @@ -569,10 +573,13 @@ static void *accept_thread(void *ignore) struct sockaddr_in sin; int sinlen; struct mansession *s; + struct protoent *p; + int arg = 1; pthread_attr_t attr; pthread_attr_init(&attr); pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); + for (;;) { sinlen = sizeof(sin); as = accept(asock, &sin, &sinlen); @@ -580,6 +587,12 @@ static void *accept_thread(void *ignore) ast_log(LOG_NOTICE, "Accept returned -1: %s\n", strerror(errno)); continue; } + p = getprotobyname("tcp"); + if( p ) { + if( setsockopt(as, 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\n", strerror(errno)); + } + } s = malloc(sizeof(struct mansession)); if (!s) { ast_log(LOG_WARNING, "Failed to allocate management session: %s\n", strerror(errno)); |