]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
fixing minor issues observed during load testing
authorKapil Gupta <kgupta@sangoma.com>
Mon, 27 Aug 2012 14:12:14 +0000 (10:12 -0400)
committerKapil Gupta <kgupta@sangoma.com>
Mon, 27 Aug 2012 14:12:14 +0000 (10:12 -0400)
src/mod/endpoints/mod_media_gateway/media_gateway_cli.c
src/mod/endpoints/mod_media_gateway/media_gateway_cmd_handler.c
src/mod/endpoints/mod_media_gateway/media_gateway_utils.c
src/mod/endpoints/mod_media_gateway/mod_media_gateway.c

index 3a740a6f25d3a2920912c58d64afe349bf78d61a..dff9da3294659c01ad228ba5218300c78142b6a4 100644 (file)
@@ -21,6 +21,7 @@ void get_peer_xml_buffer(char* prntBuf, MgPeerSta* cfm);
 void  megaco_cli_print_usage(switch_stream_handle_t *stream);
 switch_status_t handle_show_activecalls_cli_cmd(switch_stream_handle_t *stream, megaco_profile_t* mg_profile);
 switch_status_t handle_show_stats(switch_stream_handle_t *stream, megaco_profile_t* mg_profile);
+switch_status_t handle_show_stack_mem(switch_stream_handle_t *stream);
 
 /******************************************************************************/
 
@@ -194,6 +195,7 @@ switch_status_t mg_process_cli_cmd(const char *cmd, switch_stream_handle_t *stre
                }else if (!strcmp(argv[2], "show")) {
 /**********************************************************************************/
                        /* mg <mg-profile> show activecalls*/
+                       
                        if(zstr(argv[3])) {
                                goto usage;
                        }
@@ -228,7 +230,7 @@ switch_status_t mg_process_cli_cmd(const char *cmd, switch_stream_handle_t *stre
                                }else if(!strcasecmp(argv[3], "stackmem")){
                             /*******************************************************************/
                                        megaco_profile_release(profile);
-                                       sng_mg_reg_info_show();
+                                       handle_show_stack_mem(stream);
                             /*******************************************************************/
 #ifdef LEAK_TEST
                                }else if(!strcasecmp(argv[3], "leak-report")){
@@ -305,6 +307,7 @@ void  megaco_cli_print_usage(switch_stream_handle_t *stream)
        stream->write_function(stream, "mg profile <profile-name> show termstatus <term-id> \n");
        stream->write_function(stream, "mg profile <profile-name> show alltermstatus \n");
        stream->write_function(stream, "mg profile <profile-name> show stackmem  \n");
+       stream->write_function(stream, "mg profile <profile-name> show stats  \n");
 
        stream->write_function(stream, "Usage: Logging \n");
        stream->write_function(stream, "mg logging enable \n");
@@ -913,6 +916,20 @@ switch_status_t handle_show_stats(switch_stream_handle_t *stream, megaco_profile
 
 
 
+       return SWITCH_STATUS_SUCCESS;
+}
+/******************************************************************************/
+switch_status_t handle_show_stack_mem(switch_stream_handle_t *stream)
+{
+       U32 availMem = 0;
+       char buffer[4098];
+
+       memset(buffer,0,sizeof(buffer));
+
+       SGetMemInfoBuffer(S_REG, &availMem, buffer);
+
+       stream->write_function(stream, "%s",buffer);
+                       
        return SWITCH_STATUS_SUCCESS;
 }
 /******************************************************************************/
index 17a0f015273b8910f836e55ada4f42d8707226da..0cf98ed13743f3fc3a1950d7ca15a42f8ebd0116 100644 (file)
@@ -595,16 +595,19 @@ switch_status_t handle_mg_add_cmd(megaco_profile_t* mg_profile, MgMgcoCommand *i
     mg_context_t* mg_ctxt;
     int mediaId;
     MgMgcoLocalDesc   *local = NULL;
+    char term_name[128];
     /*CmSdpInfoSet      *psdp  = NULL;*/
 
-    /* TODO - Kapil dummy line , will need to add with proper code */
+    memset(&term_name,0,sizeof(term_name));
+
     inc_med_desc = &cmd->dl.descs[0]->u.media;
 
     /********************************************************************/
     ctxtId  = &inc_cmd->contextId;
     termLst = mg_get_term_id_list(inc_cmd);
     termId  = termLst->terms[0];
-    /* For Matt - termId->name.lcl.val - to get the termination id name */
+    MG_MEM_COPY(&term_name, termId->name.lcl.val, sizeof(U8) * termId->name.lcl.len);
+
 
     /********************************************************************/
     /* Validating ADD request *******************************************/
@@ -683,13 +686,13 @@ switch_status_t handle_mg_add_cmd(megaco_profile_t* mg_profile, MgMgcoCommand *i
 
     /********************************************************************/
     }else{  /* Physical termination */
-           term = megaco_find_termination(mg_profile, (char*)termId->name.lcl.val);
+           term = megaco_find_termination(mg_profile, term_name); 
            mg_profile->mg_stats->total_num_of_phy_add_recvd++;
 
            if(NULL == term){
                mg_profile->mg_stats->total_num_of_find_term_failed_error++;
                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR,
-                       " megaco_find_termination failed for term-id[%s] \n",(char*)termId->name.lcl.val);      
+                       " megaco_find_termination failed for term-id[%s] \n", term_name);
                    mg_util_set_err_string(&errTxt, " Resource Failure ");
                    err_code = MGT_MGCO_RSP_CODE_RSRC_ERROR;
                    goto error;
@@ -904,12 +907,16 @@ switch_status_t handle_mg_modify_cmd(megaco_profile_t* mg_profile, MgMgcoCommand
        int mediaId;
        /*MgMgcoAmmReq    *cmd = &inc_cmd->u.mgCmdInd[0]->cmd.u.mod;*/
        U32                txn_id = inc_cmd->transId.val;
+       char term_name[128];
+
+       memset(&term_name,0,sizeof(term_name));
 
        /********************************************************************/
        ctxtId  = &inc_cmd->contextId;
        termLst = mg_get_term_id_list(inc_cmd);
        termId  = termLst->terms[0];
-       /* For Matt - termId->name.lcl.val - to get the termination id name */
+
+       MG_MEM_COPY(&term_name, termId->name.lcl.val, sizeof(U8) * termId->name.lcl.len);
 
        /********************************************************************/
        /* Validation *******************************************/
@@ -964,7 +971,7 @@ switch_status_t handle_mg_modify_cmd(megaco_profile_t* mg_profile, MgMgcoCommand
                                termId->name.lcl.val, ctxtId->type.val, ctxtId->val.val);
 #endif
 
-               term = megaco_find_termination(mg_profile, (char*)termId->name.lcl.val);
+               term = megaco_find_termination(mg_profile, term_name); 
 
                if(NULL == term){
                    mg_profile->mg_stats->total_num_of_find_term_failed_error++;
@@ -1200,7 +1207,9 @@ switch_status_t handle_mg_subtract_cmd(megaco_profile_t* mg_profile, MgMgcoComma
     mg_context_t* mg_ctxt = NULL;
     mg_termination_t* term = NULL;
     uint8_t        wild = 0x00;
+    char term_name[128];
 
+    memset(&term_name,0,sizeof(term_name));
     wild = inc_cmd->u.mgCmdReq[0]->wild.pres;
 
 
@@ -1208,6 +1217,7 @@ switch_status_t handle_mg_subtract_cmd(megaco_profile_t* mg_profile, MgMgcoComma
     ctxtId  = &inc_cmd->contextId;
     termLst = mg_get_term_id_list(inc_cmd);
     termId  = termLst->terms[0];
+    MG_MEM_COPY(&term_name, termId->name.lcl.val, sizeof(U8) * termId->name.lcl.len);
 
     mg_profile->mg_stats->total_num_of_sub_recvd++;
 
@@ -1277,14 +1287,14 @@ switch_status_t handle_mg_subtract_cmd(megaco_profile_t* mg_profile, MgMgcoComma
 
         }else if(MGT_TERMID_OTHER == termId->type.val){
 
-            switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO," SUB Request for termination[%s]  \n", (char*)termId->name.lcl.val);
+            switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO," SUB Request for termination[%s]  \n", term_name); 
 
-            term = megaco_find_termination(mg_profile, (char*)termId->name.lcl.val);
+            term = megaco_find_termination(mg_profile,  term_name);
 
            if(NULL == term){
                    mg_profile->mg_stats->total_num_of_find_term_failed_error++;
                    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR,
-                                   "Subtract request Failed, no termination found for input term string[%s] \n", (char*)termId->name.lcl.val); 
+                                   "Subtract request Failed, no termination found for input term string[%s] \n", term_name); 
                    mg_util_set_term_string(&errTxt,termId);
                    err_code = MGT_MGCO_RSP_CODE_UNKNOWN_TERM_ID;
                    goto error;
index 6cea2f1480bb74f375d3f33b6cfbc1f64d138f68..9ff581f916fb029ac8b1ee3af7910b54f2ca9da9 100644 (file)
@@ -86,12 +86,18 @@ switch_status_t mg_stack_termination_is_in_service(megaco_profile_t* mg_profile,
        mg_termination_t* term = NULL;
        term = megaco_find_termination(mg_profile, term_str);
 
+
        if(term && MG_TERM_RTP == term->type) {
                return SWITCH_STATUS_SUCCESS;
-       }else if(term && (MG_TERM_TDM == term->type) &&
-                       switch_test_flag(term, MG_IN_SERVICE)){
-               return SWITCH_STATUS_SUCCESS;
+       }else if(term && (MG_TERM_TDM == term->type)){
+               if(switch_test_flag(term, MG_IN_SERVICE)){
+                       return SWITCH_STATUS_SUCCESS;
+               }else{
+                       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, " Term[%s] not in service\n", term_str); 
+                       return SWITCH_STATUS_FALSE;
+               }
        } else {
+               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, " Failed to find term for term string[%s]\n", term_str); 
                return SWITCH_STATUS_FALSE;
        }
 }
index d6d600f456ec42a03eff21981919b4b954697d46..1306d658bab29e39b75d05c3d6530e5716f5a615 100644 (file)
@@ -556,8 +556,8 @@ void handle_mgco_cmd_ind(Pst *pst, SuId suId, MgMgcoCommand* cmd)
        if ((CH_CMD_TYPE_IND == cmd->cmdType.val) &&
                        (MGT_TERMID_OTHER == termId->type.val) && 
                        (MGT_AUDITVAL != cmd->u.mgCmdInd[0]->cmd.type.val)){
-               if(SWITCH_STATUS_FALSE == mg_stack_termination_is_in_service(mg_profile, (char*)termId->name.lcl.val, termId->name.lcl.len)){
                        MG_MEM_COPY(&prnt_buf, termId->name.lcl.val, sizeof(U8) * termId->name.lcl.len);
+                       if(SWITCH_STATUS_FALSE == mg_stack_termination_is_in_service(mg_profile, prnt_buf, strlen(prnt_buf))){
                        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Termination[%s] not in service \n",(strlen(prnt_buf))?prnt_buf:"NULL");
                        mg_profile->mg_stats->total_num_of_term_not_in_service_error++;
                        mg_util_set_term_string(&errTxt, termId);