Thirdlane kamailio – fix sip 400 error

manager version: 11.1.3.40

https://www.thirdlane.com/forum/trunk-incoming-calls-400-bad-to-header

https://kamailio.org/docs/modules/4.3.x/modules/htable.html

https://www.kamailio.org/wiki/cookbooks/5.2.x/pseudovariables

$ci - Call-Id
$ci - reference to body of call-id header
$hdr(name) - represents the body of first header identified by 'name'
   
   // part 1 --
modparam("htable", "htable", "frompstn_request=>size=6")

* entry 2 ^ 6 = 64 

    // part 2 --  request_route {
    // my idea, reinitialize htable variable after handling this packet
    if ($sht(frompstn_request=>$ci::FROM) != $null) {
      xlog("L_DBG", "== TRACE. $ci - CANCEL. Htable frompstn_request has record for $ci Clearing it\n");
      $sht(frompstn_request=>$ci::FROM) = $null;
    }


  // part 3 -- route[FROMPSTN]
  if (is_method("INVITE")) {
    xlog("L_DBG", "== TRACE. $ci - FROMPSTN. INVITE\n");
    $sht(frompstn_request=>$ci::FROM) = $hdr(From);
  }

  // part 4 -- route[BYE] {
  $var(frompstn_request_bye) = "0";
  $var(frompstn_request) = $sht(frompstn_request=>$ci::FROM);
  if ($var(frompstn_request) != "0") {
    $var(frompstn_request_bye) = $var(frompstn_request);
    xlog("L_DBG", "== TRACE. $ci - BYE. Htable frompstn_request has record for $ci Clearing it\n");
    $sht(frompstn_request=>$ci::FROM) = $null;
  }

    // part 5 -- route[TRUNK_MANAGE] {
    if (is_method("BYE")) {
      if ($var(frompstn_request_bye) != "0") {
        xlog("L_DBG", "== TRACE. $ci - TRUNK_MANAGE. BYE. frompstn_request_bye is set\n");
        xlog("L_DBG", "== TRACE. $ci - TRUNK_MANAGE. Adjusting To header\n");
        remove_hf("To");
        insert_hf("To: $var(frompstn_request_bye)\r\n", "Call-ID");
      }
    } else {
      $var(frompstn_request_from_hdr) = $sht(frompstn_request=>$ci::FROM);
      if ($var(frompstn_request_from_hdr) != "0") {
        xlog("L_DBG", "== TRACE. $ci - TRUNK_MANAGE. frompstn_request htable record was found\n");
        xlog("L_DBG", "== TRACE. $ci - TRUNK_MANAGE. Adjusting To header\n");
        remove_hf("To");
        insert_hf("To: $var(frompstn_request_from_hdr)\r\n", "Call-ID");
      }
    }