aboutsummaryrefslogtreecommitdiffstats
path: root/manager.c
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2003-03-20 17:21:54 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2003-03-20 17:21:54 +0000
commit3d4c6ea82a08d9703653f7d8838fabef81da63b6 (patch)
tree000f12071b6f97c254068faa7c82566df7f986d1 /manager.c
parentb8540d24188d6f657c28b842c0d32fa1e60af3c6 (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-xmanager.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/manager.c b/manager.c
index be1bb28fb..1b954c845 100755
--- a/manager.c
+++ b/manager.c
@@ -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));