Kamailio patch to stop crashes with TCP traffic: Difference between revisions

From Integrics Wiki
Jump to navigation Jump to search
Content deleted Content added
Created page with "On some systems running Enswitch 3.14 or higher we've noticed Kamailio can crash if there is TCP traffic. The following patch was provided by Daniel-Constantin Mierla to fix i..."
 
No edit summary
Line 1: Line 1:
On some systems running Enswitch 3.14 or higher we've noticed Kamailio can crash if there is TCP traffic. The following patch was provided by Daniel-Constantin Mierla to fix it. Apparently the fix went into the 5.1 and 5.2 branches in October 2019.
On some systems running Enswitch 3.14 or higher we've noticed Kamailio can crash if there is TCP traffic. The following patch was provided by Daniel-Constantin Mierla to fix it. Apparently the fix went into the 5.1 and 5.2 branches in October 2019.


Replace the exiting functions unload_perl() and perl_reload() from app_perl_mod.c file with the next content:
Replace the exiting functions unload_perl() and perl_reload() from modules/app_perl/app_perl_mod.c file with the next content:


<pre>
<pre>

Revision as of 07:01, 25 May 2020

On some systems running Enswitch 3.14 or higher we've noticed Kamailio can crash if there is TCP traffic. The following patch was provided by Daniel-Constantin Mierla to fix it. Apparently the fix went into the 5.1 and 5.2 branches in October 2019.

Replace the exiting functions unload_perl() and perl_reload() from modules/app_perl/app_perl_mod.c file with the next content:

/*
 *
 */
int unload_perl(PerlInterpreter *p) {
    /* clean and reset everything */
    PL_perl_destruct_level = 1;
    perl_destruct(p);
    perl_free(p);

    return 0;
}


/*
 * reload function.
 * Reinitializes the interpreter. Works, but execution for _all_
 * children is difficult.
 */
int perl_reload(void)
{
    if(my_perl) {
        unload_perl(my_perl);
    }
    my_perl = parser_init();

#ifdef PERL_EXIT_DESTRUCT_END
    PL_exit_flags |= PERL_EXIT_DESTRUCT_END;
#else
#warning Perl 5.8.x should be used. Please upgrade.
#warning This binary will be unsupported.
    PL_exit_flags |= PERL_EXIT_EXPECTED;
#endif

    if(my_perl) {
        LM_DBG("new perl interpreter initialized\n");
        return 0;
    } else {
        LM_CRIT("failed to initialize a new perl interpreter - exiting\n");
        exit(-1);
    }
}