Skip to content
Julien Lamarche edited this page Mar 18, 2020 · 1 revision

Welcome to the sipp wiki!

Hnadling unexpectected messasge

Either here in call.cpp:

In sipp/src/call.cpp:

2987     /* If it is still not found, process an unexpected message */
2988     if(!found) {
2989         if (call_scenario->unexpected_jump >= 0) {
2990             bool recursive = false;
2991             if (call_scenario->retaddr >= 0) {
2992                 if (M_callVariableTable->getVar(call_scenario->retaddr)->getDouble() != 0) {
2993                     /* We are already in a jump! */
2994                     recursive = true;
2995                 } else {
2996                     M_callVariableTable->getVar(call_scenario->retaddr)->setDouble(msg_index);
2997                 }
2998             }
2999             if (!recursive) {
3000                 if (call_scenario->pausedaddr >= 0) {
3001                     M_callVariableTable->getVar(call_scenario->pausedaddr)->setDouble(paused_until);
3002                 }
3003                 msg_index = call_scenario->unexpected_jump;
3004                 queue_up(msg);
3005                 paused_until = 0;
3006                 return run();
3007             } else {
3008                 if (!process_unexpected(msg)) {
3009                     return false; // Call aborted by unexpected message handling
3010                 }
3011             }
3012         } else {
3013             T_AutoMode L_case;
3014             if ((L_case = checkAutomaticResponseMode(request)) == 0) {
3015                 if (!process_unexpected(msg)) {
3016                     return false; // Call aborted by unexpected message handling
3017                 }
3018             } else {
3019                 // call aborted by automatic response mode if needed
3020                 return automaticResponseMode(L_case, msg);
3021             }
3022         }
3023     }

But where is it parsing in here sipp/src/scenario.cpp

871                 if((cptr = xp_get_value("response"))) {
 872                     curmsg ->recv_response = get_long(cptr, "response code");
 873                     if (method_list) {
 874                         curmsg->recv_response_for_cseq_method_list = strdup(method_list);
 875                     }
 876                     if ((cptr = xp_get_value("response_txn"))) {
 877                         curmsg->response_txn = get_txn(cptr, "transaction response", false, false, false);
 878                     }
 879                 }
 880 
Clone this wiki locally