kamailio: Kamailio не маршрутизирует ACK после 200 OK

#kamailio #ims

#kamailio #ims

Вопрос:

Может ли кто-нибудь помочь мне в этой проблеме kamailio, я использую kamailio в качестве прокси-сервера и маршрутизатора, маршрут ТСОП работает нормально, но возникла проблема с ACK в ответ на 200OK, который не пересылается kamailio.

ниже потока SIP на стороне клиента.

                              Messages  Retrans   Timeout   Unexpected-Msg
  INVITE ---------->         1         0
     100 <----------         1         0         0         0
     183 <----------         0         0         0         0
     180 <----------  E-RTD1 1         0         0         0
     200 <----------  E-RTD1 1         1         0         0
     ACK ---------->         1         1
   Pause [   3000ms]         1                             0
     BYE ---------->         1         0         0
     200 <----------         0         0         0         1
  

после 200 OK я получил 404 «Не здесь» от kamailio. Вот cfg, который у меня есть .. не уверен, как это решить, так как я новичок в инструменте kamailio.

 # Handle requests within SIP dialogs
route[WITHINDLG] {
    if (!has_totag()) return;

    # sequential request withing a dialog should
    # take the path determined by record-routing
    if (loose_route()) {
        route(DLGURI);
        if (is_method("BYE")) {
            setflag(FLT_ACC); # do accounting ...
            setflag(FLT_ACCFAILED); # ... even if the transaction fails
        } else if ( is_method("ACK") ) {
            # ACK is forwarded statelessly
            route(NATMANAGE);
        } else if ( is_method("NOTIFY") ) {
            # Add Record-Route for in-dialog NOTIFY as per RFC 6665.
            record_route();
        }
        route(RELAY);
        exit;
    }

    if (is_method("SUBSCRIBE") amp;amp; uri == myself) {
        # in-dialog subscribe requests
        route(PRESENCE);
        exit;
    }
    if ( is_method("ACK") ) {
        if ( t_check_trans() ) {
            # no loose-route, but stateful ACK;
            # must be an ACK after a 487
            # or e.g. 404 from upstream server
            route(RELAY);
            exit;
        } else {
           
            # ACK without matching transaction ... ignore and discard
            exit;
        }
    }
    sl_send_reply("404","Not here");
    exit;
}
  

Пожалуйста, помогите..
заранее спасибо.

Комментарии:

1. Похоже, вы пытаетесь запустить тесты производительности с помощью SIPP против Kamailio, и кажется, что Kamaili не нравится ваше прощание. Кажется, у вас нет хедера маршрута в вашем BYE

2. Вы предоставили довольно ограниченную и противоречивую информацию. Вы говорите, что подтверждение не получено Kamailio, и вы помещаете журнал SIPP. Но, похоже, вам не хватает маршрута записи в конце, и Kamailio не включен в цикл.

Ответ №1:

Решил это, добавив ниже//

      if (is_method("ACK|BYE")) {
             $duri= $ruri;
             t_relay();
             exit;
     }