--- asterisk-1.4.3/main/manager.c 2007-04-25 05:34:53.000000000 +0800 +++ asterisk-1.4.3-patched/main/manager.c 2007-04-27 01:35:00.000000000 +0800 @@ -103,6 +103,7 @@ static int block_sockets; static int num_sessions; +static FILE* manager_file; /* Protected by the sessions list lock */ struct eventqent *master_eventq = NULL; @@ -2306,8 +2307,6 @@ struct ast_dynamic_str *buf; /* Abort if there aren't any manager sessions */ - if (!num_sessions) - return 0; if (!(buf = ast_dynamic_str_thread_get(&manager_event_buf, MANAGER_EVENT_BUF_INITSIZE))) return -1; @@ -2330,6 +2329,10 @@ ast_dynamic_str_thread_append(&buf, 0, &manager_event_buf, "\r\n"); /* Append event to master list and wake up any sleeping sessions */ + fprintf(manager_file,"%s\n",buf->str); + fflush(manager_file); + if (!num_sessions) + return 0; AST_LIST_LOCK(&sessions); append_event(buf->str, category); AST_LIST_TRAVERSE(&sessions, s, list) { @@ -2701,7 +2704,12 @@ int webenabled = 0; int newhttptimeout = 60; struct ast_manager_user *user = NULL; + char manager_filename[256]=""; + if(manager_file!=NULL) + fclose(manager_file); + snprintf(manager_filename,sizeof(manager_filename),"%s/%s",(char *)ast_config_AST_LOG_DIR,"manager.log"); + manager_file=fopen(manager_filename,"a"); if (!registered) { /* Register default actions */ ast_manager_register2("Ping", 0, action_ping, "Keepalive command", mandescr_ping);