<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        color:black;
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML-ként formázott Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0cm;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:36.0pt;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        color:black;
        mso-fareast-language:EN-US;}
span.HTML-kntformzottChar
        {mso-style-name:"HTML-ként formázott Char";
        mso-style-priority:99;
        mso-style-link:"HTML-ként formázott";
        font-family:Consolas;
        color:black;
        mso-fareast-language:EN-US;}
span.E-mailStlus19
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.E-mailStlus20
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
span.E-mailStlus21
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1095400431;
        mso-list-type:hybrid;
        mso-list-template-ids:-1059295966 1807747088 68026371 68026373 68026369 68026371 68026373 68026369 68026371 68026373;}
@list l0:level1
        {mso-level-start-at:900;
        mso-level-number-format:bullet;
        mso-level-text:-;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-font-family:Calibri;
        mso-bidi-font-family:"Times New Roman";}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor="white" lang="HU" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal"><span style="color:#1F497D">Hi, <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">you gave me an idea where to find the error.
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">We modified the ul_publish.c source in order to achieve the following results:<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-18.0pt;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="color:#1F497D"><span style="mso-list:Ignore">-<span style="font:7.0pt "Times New Roman"">         
</span></span></span><![endif]><span style="color:#1F497D">when client sends a REGISTER, an implicit PUBLISH is called so in each registration, publication should also happen<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-18.0pt;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="color:#1F497D"><span style="mso-list:Ignore">-<span style="font:7.0pt "Times New Roman"">         
</span></span></span><![endif]><span style="color:#1F497D">when tcp socket is lost, we want that the contacts of the lost user get a presence NOTIFY with open=0 state to show the unregistered (lost) state<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Here is the ul_publish.c source, maybe the bug is in it. But in our dev system, it works like a charm:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#include <stdio.h><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#include <stdlib.h><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#include <string.h><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#include <libxml/parser.h><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#include <time.h><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#include "../../parser/parse_expires.h"<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#include "../../parser/msg_parser.h"<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#include "../../str.h"<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#include "../../dset.h"<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#include "../usrloc/usrloc.h"<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#include "../usrloc/ul_callback.h"<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#include "../../modules/tm/tm_load.h"<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#include "../pua/pua.h"<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#include "pua_usrloc.h"<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#define BUF_LEN   256<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#define REG_BY_PUBLISH<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#ifdef REG_BY_PUBLISH<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">static char* device_buffer = NULL;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">static char* state_buffer = NULL;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">static char* content_buffer = NULL;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">static void replace_string(char** dst, const char* source, int len)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if (*dst)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               free(*dst);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               *dst = NULL;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if (source)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                {              <o:p>
</o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               *dst = malloc(len+1);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               strncpy(*dst, source, len);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               (*dst)[len] = 0;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#endif<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">int pua_set_publish(struct sip_msg* msg , char* s1, char* s2)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#ifdef REG_BY_PUBLISH<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                const char* first_delimiter = NULL;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                const char* second_delimiter = NULL;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                // Prepare place to store data<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                replace_string(&device_buffer, NULL, 0);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                replace_string(&state_buffer, NULL, 0);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                replace_string(&content_buffer, NULL, 0);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if (s1)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               first_delimiter = strchr(s1, ';');<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               if (first_delimiter)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                               second_delimiter = strchr(first_delimiter+1, ';');<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               <o:p>
</o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               if (first_delimiter)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                               replace_string(&device_buffer, s1, first_delimiter - s1);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                              
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                               if (second_delimiter)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                               {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                                               replace_string(&state_buffer, first_delimiter+1, second_delimiter - first_delimiter - 1);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                                               replace_string(&content_buffer, second_delimiter+1, strlen(s1) - (second_delimiter - s1 + 1));<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                               }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if (strlen(s1) && (!device_buffer || !state_buffer || !content_buffer))<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               LM_WARN("Failed to parse PresenceInReg header\n");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               return 1;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if (device_buffer)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               LM_DBG("Device: %s\n", device_buffer);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if (state_buffer)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               LM_DBG("State: %s\n", state_buffer);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if (content_buffer)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               LM_DBG("Content: %s\n", content_buffer);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#endif<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                pua_ul_publish= 1;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if(pua_ul_bmask!=0)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               setbflag(0, pua_ul_bflag);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                return 1;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">int pua_unset_publish(struct sip_msg* msg, unsigned int flags, void* param)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">//            LM_ERR("unset send publish\n");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                pua_ul_publish= 0;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if(pua_ul_bmask!=0)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               resetbflag(0, pua_ul_bflag);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                return 1;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">/* for debug purpose only */<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">void print_publ(publ_info_t* p)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                LM_DBG("publ:\n");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                LM_DBG("uri= %.*s\n", p->pres_uri->len, p->pres_uri->s);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                LM_DBG("id= %.*s\n", p->id.len, p->id.s);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                LM_DBG("expires= %d\n", p->expires);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">}              <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">str* build_pidf(ucontact_t* c<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#ifdef REG_BY_PUBLISH<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                , int open, const char* tuple_id, const char* content<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#endif<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                xmlDocPtr  doc = NULL;
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                xmlNodePtr root_node = NULL;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                xmlNodePtr tuple_node = NULL;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                xmlNodePtr status_node = NULL;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                xmlNodePtr basic_node = NULL;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#ifdef REG_BY_PUBLISH<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                xmlNodePtr note_node = NULL;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#endif<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                str *body= NULL;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                str pres_uri= {NULL, 0};<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                char buf[BUF_LEN];<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                char* at= NULL;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if(c->expires< (int)time(NULL))<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               LM_ERR("PUBLISH: found expired \n\n");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#ifdef REG_BY_PUBLISH<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               open = 0;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#else<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               return NULL;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#endif<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                pres_uri.s = buf;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if(pres_prefix.s)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               memcpy(pres_uri.s, pres_prefix.s, pres_prefix.len);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               pres_uri.len+= pres_prefix.len;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               memcpy(pres_uri.s+ pres_uri.len, ":", 1);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               pres_uri.len+= 1;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if(pres_uri.len + c->aor->len+ 1 > BUF_LEN)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               LM_ERR("buffer size overflown\n");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               return NULL;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                memcpy(pres_uri.s+ pres_uri.len, c->aor->s, c->aor->len);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                pres_uri.len+= c->aor->len;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                at = memchr(c->aor->s, '@', c->aor->len);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if(!at)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               if(pres_uri.len + 2 + default_domain.len > BUF_LEN)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                               LM_ERR("buffer size overflown\n");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                               return NULL;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               pres_uri.s[pres_uri.len++]= '@';<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               memcpy(pres_uri.s+ pres_uri.len, default_domain.s, default_domain.len);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               pres_uri.len+= default_domain.len;                    
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                pres_uri.s[pres_uri.len]= '\0';<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                /* create the Publish body  */<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                doc = xmlNewDoc(BAD_CAST "1.0");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if(doc==0)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               LM_ERR("Failed to create new xml\n");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               return NULL;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                root_node = xmlNewNode(NULL, BAD_CAST "presence");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if(root_node==0)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               LM_ERR("Cannot obtain root node\n");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               goto error;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                xmlDocSetRootElement(doc, root_node);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                xmlNewProp(root_node, BAD_CAST "xmlns",<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                               BAD_CAST "urn:ietf:params:xml:ns:pidf");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                xmlNewProp(root_node, BAD_CAST "xmlns:dm",<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                               BAD_CAST "urn:ietf:params:xml:ns:pidf:data-model");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                xmlNewProp(root_node, BAD_CAST  "xmlns:rpid",<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                               BAD_CAST "urn:ietf:params:xml:ns:pidf:rpid" );<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                xmlNewProp(root_node, BAD_CAST "xmlns:c",<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                               BAD_CAST "urn:ietf:params:xml:ns:pidf:cipid");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                xmlNewProp(root_node, BAD_CAST "entity", BAD_CAST pres_uri.s);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                tuple_node =xmlNewChild(root_node, NULL, BAD_CAST "tuple", NULL) ;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#ifdef REG_BY_PUBLISH<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                // Override default tuple id<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                xmlNewProp(tuple_node, BAD_CAST "id", BAD_CAST tuple_id);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#endif<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if( tuple_node ==NULL)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               LM_ERR("while adding child\n");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               goto error;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                status_node = xmlNewChild(tuple_node, NULL, BAD_CAST "status", NULL) ;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if( status_node ==NULL)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               LM_ERR("while adding child\n");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               goto error;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#ifdef REG_BY_PUBLISH<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                basic_node = xmlNewChild(status_node, NULL, BAD_CAST "basic",<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               open ? (BAD_CAST "open") : (BAD_CAST "close")) ;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#else<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                basic_node = xmlNewChild(status_node, NULL, BAD_CAST "basic",<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               BAD_CAST "open");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#endif<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if( basic_node ==NULL)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               LM_ERR("while adding child\n");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               goto error;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#ifdef REG_BY_PUBLISH<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                /* LM_ERR("Content is %s \n", content); */<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                note_node = xmlNewChild(tuple_node, NULL, BAD_CAST "note", BAD_CAST content);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if ( note_node == NULL)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               LM_ERR("while adding child\n");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               goto error;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#endif<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                body = (str*)pkg_malloc(sizeof(str));<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if(body == NULL)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               LM_ERR("while allocating memory\n");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               return NULL;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                memset(body, 0, sizeof(str));<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                xmlDocDumpFormatMemory(doc,(unsigned char**)(void*)&body->s,&body->len,1);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                LM_DBG("new_body:\n%.*s\n",body->len, body->s);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                /*free the document */<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                xmlFreeDoc(doc);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                xmlCleanupParser();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                return body;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">error:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if(body)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               if(body->s)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                               xmlFree(body->s);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               pkg_free(body);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if(doc)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               xmlFreeDoc(doc);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                return NULL;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">}              <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">void ul_publish(ucontact_t* c, int type, void* param)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                str* body= NULL;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                str uri= {NULL, 0};<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                char* at= NULL;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                publ_info_t* publ= NULL;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                int size= 0;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                str content_type;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                int error;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                content_type.s= "application/pidf+xml";<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                content_type.len= 20;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#ifndef REG_BY_PUBLISH<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if(pua_ul_publish==0 && pua_ul_bmask==0)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               LM_INFO("should not send ul publish\n");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               return;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#endif<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if(pua_ul_bmask!=0 && (c->cflags & pua_ul_bmask)==0)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               LM_INFO("not marked for publish\n");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               return;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if(type & UL_CONTACT_DELETE) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               LM_DBG("\nDELETE type\n");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                } else {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               if(type & UL_CONTACT_INSERT) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                               LM_DBG("\nINSERT type\n");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               } else {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                               if(type & UL_CONTACT_UPDATE) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                                               LM_DBG("\nUPDATE type\n");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                               } else {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                                               if(type & UL_CONTACT_EXPIRE) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                                                              LM_DBG("\nEXPIRE type\n");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                                               }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                               }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#ifdef REG_BY_PUBLISH<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                int online = type & UL_CONTACT_INSERT || type & UL_CONTACT_UPDATE;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if (online && state_buffer)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               online = strcmp(state_buffer, "closed") != 0;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                body= build_pidf(c, online, device_buffer ? device_buffer : "device", content_buffer ? content_buffer : "");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if(online && (body == NULL || body->s == NULL))<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               goto error;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#else<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if(type & UL_CONTACT_INSERT)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               body= build_pidf(c);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               if(body == NULL || body->s == NULL)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                               goto error;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                else<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               body = NULL;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#endif<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                uri.s = (char*)pkg_malloc(sizeof(char)*(c->aor->len+default_domain.len+6));<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if(uri.s == NULL)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               goto error;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                memcpy(uri.s, "sip:", 4);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                uri.len = 4;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                memcpy(uri.s+ uri.len, c->aor->s, c->aor->len);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                uri.len+= c->aor->len;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                at = memchr(c->aor->s, '@', c->aor->len);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if(!at)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               uri.s[uri.len++]= '@';<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               memcpy(uri.s+ uri.len, default_domain.s, default_domain.len);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               uri.len+= default_domain.len;                
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                LM_DBG("uri= %.*s\n", uri.len, uri.s);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                size= sizeof(publ_info_t)+ sizeof(str)+( uri.len
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                               +c->callid.len+ 12 + content_type.len)*sizeof(char);
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if(body)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               size+= sizeof(str)+ body->len* sizeof(char);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                publ= (publ_info_t*)pkg_malloc(size);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if(publ== NULL)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               LM_ERR("no more share memory\n");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               goto error;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                memset(publ, 0, size);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                size= sizeof(publ_info_t);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                publ->pres_uri= (str*)((char*)publ + size);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                size+= sizeof(str);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                publ->pres_uri->s= (char*)publ+ size;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                memcpy(publ->pres_uri->s, uri.s, uri.len);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                publ->pres_uri->len= uri.len;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                size+= uri.len;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if(body)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               publ->body= (str*)( (char*)publ + size);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               size+= sizeof(str);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               publ->body->s= (char*)publ + size;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               memcpy(publ->body->s, body->s, body->len);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               publ->body->len= body->len;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               size+= body->len;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                publ->id.s= (char*)publ+ size;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                memcpy(publ->id.s, "UL_PUBLISH.", 11);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                memcpy(publ->id.s+11, c->callid.s, c->callid.len);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                publ->id.len= 11+ c->callid.len;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                size+= publ->id.len;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                publ->content_type.s= (char*)publ+ size;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                memcpy(publ->content_type.s, content_type.s, content_type.len);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                publ->content_type.len= content_type.len;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                size+= content_type.len;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if(type & UL_CONTACT_EXPIRE || type & UL_CONTACT_DELETE)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               publ->expires= 0;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                else <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#ifndef REG_BY_PUBLISH<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               publ->expires= c->expires - (int)time(NULL);
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#else<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               publ->expires = 900;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#endif<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if(type & UL_CONTACT_INSERT)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               publ->flag|= INSERT_TYPE;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                else<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               publ->flag|= UPDATE_TYPE;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                publ->source_flag|= UL_PUBLISH;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                publ->event|= PRESENCE_EVENT;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                publ->extra_headers= NULL;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                print_publ(publ);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if((error=pua_send_publish(publ))< 0)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#ifdef REG_BY_PUBLISH<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               LM_ERR("while sending publish\n");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#else<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               LM_ERR("while sending publish for ul event %d\n", type);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#endif<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               if(type & UL_CONTACT_UPDATE && error == ERR_PUBLISH_NO_BODY) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                               /* This error can occur if Kamailio was restarted/stopped and for any reason couldn't store a pua<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                               * entry in 'pua' DB table. It can also occur if 'pua' table is cleaned externally while Kamailio<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                               * is stopped so cannot retrieve these entries from DB when restarting.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                               * In these cases, when a refresh registration for that user creates an UPDATE action in pua_usrloc,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                               * pua 'ul_publish()' would fail since the appropiate entry doesn't exist in pua hast table ("New
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                                * PUBLISH and no body found - invalid request").<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                               * This code solves this problem by invoking an INSERT action if an UPDATE action failed due to the
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                                * above error. It will however generate a new presentity entry in the presence server (until the<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                               * previous one expires), but this is a minor issue. */<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                               LM_ERR("UPDATE action generated a PUBLISH without body -> invoking INSERT action\n");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                               ul_publish(c, UL_CONTACT_INSERT, param);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                               return;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                pua_ul_publish= 0;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">error:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if(publ)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               pkg_free(publ);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if(body)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               if(body->s)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                               xmlFree(body->s);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               pkg_free(body);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                if(uri.s)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                               pkg_free(uri.s);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                pua_ul_publish= 0;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                return;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal" style="text-autospace:none"><b><span lang="EN-US" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#00608D;mso-fareast-language:HU">Péter</span></b><b><span lang="DE" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#00608D;mso-fareast-language:HU"><o:p></o:p></span></b></p>
</div>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span style="color:windowtext;mso-fareast-language:HU">From:</span></b><span style="color:windowtext;mso-fareast-language:HU"> Daniel-Constantin Mierla [mailto:miconda@gmail.com]
<br>
<b>Sent:</b> Monday, April 27, 2015 11:41 PM<br>
<b>To:</b> Péter Barabás; Kamailio (SER) - Users Mailing List<br>
<b>Subject:</b> Re: [SR-Users] kamailio crash periodically in timer handler<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-bottom:12.0pt">Hello,<br>
<br>
got dragged by some other tasks for a while...<br>
<br>
Can you list here all your loaded modules? Also, are you having event routes in your config?<br>
<br>
At this moment it looks like either a buffer overflow somewhere or a free of an shared memory element without detaching from timer. I will need more details to narrow it down.<br>
<br>
Cheers,<br>
Daniel<span style="font-size:12.0pt;mso-fareast-language:HU"><o:p></o:p></span></p>
<div>
<p class="MsoNormal">On 23/04/15 17:54, Péter Barabás wrote:<o:p></o:p></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal"><span style="color:#1F497D">Hi,</span><o:p></o:p></p>
<p class="MsoNormal"><span style="color:#1F497D"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="color:#1F497D">here it is:</span><o:p></o:p></p>
<p class="MsoNormal"><span style="color:#1F497D"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="color:#1F497D">$1 = {next = 0x0, prev = 0x7f64eb5b6bd0, expire = 1432560038, initial_timeout = 80, data = 0x7f64ebc3a888, f = 0x7f6510a2c165 <wait_handler>, flags = 513, slow_idx = 0}</span><o:p></o:p></p>
<p class="MsoNormal"><span style="color:#1F497D"> </span><o:p></o:p></p>
<div>
<p class="MsoNormal" style="margin-right:36.0pt;text-autospace:none"><b><span lang="EN-US" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#1F497D;mso-fareast-language:HU">Péter</span></b><span style="color:#1F497D"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="color:#1F497D"><o:p> </o:p></span></p>
</div>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span style="color:windowtext;mso-fareast-language:HU">From:</span></b><span style="color:windowtext;mso-fareast-language:HU"> sr-users [<a href="mailto:sr-users-bounces@lists.sip-router.org">mailto:sr-users-bounces@lists.sip-router.org</a>]
<b>On Behalf Of </b>Daniel-Constantin Mierla<br>
<b>Sent:</b> Thursday, April 23, 2015 5:07 PM<br>
<b>To:</b> Kamailio (SER) - Users Mailing List<br>
<b>Subject:</b> Re: [SR-Users] kamailio crash periodically in timer handler</span><o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:12.0pt">Hello,<br>
<br>
can you get from gdb the output of:<br>
<br>
p *tl<br>
<br>
Cheers,<br>
Daniel<o:p></o:p></p>
<div>
<p class="MsoNormal">On 23/04/15 17:00, Péter Barabás wrote:<o:p></o:p></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal">Hi,<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">we have a serious problem with Kamailio v4.2.3, it crashes after some days. We have checked the core dump and the gdb output is the following for bt and full backtrace:<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">#0  0x0000000000602291 in timer_list_expire (t=1432559962, h=0x7f64eb5b6bd0, slow_l=0x7f64eb5ba328, slow_mark=43873) at timer.c:877<o:p></o:p></p>
<p class="MsoNormal">#1  0x0000000000602746 in timer_handler () at timer.c:953<o:p></o:p></p>
<p class="MsoNormal">#2  0x0000000000602bb9 in timer_main () at timer.c:992<o:p></o:p></p>
<p class="MsoNormal">#3  0x00000000004a833c in main_loop () at main.c:1700<o:p></o:p></p>
<p class="MsoNormal">#4  0x00000000004ad857 in main (argc=13, argv=0x7fff96697d38) at main.c:2578<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">#0  0x0000000000602291 in timer_list_expire (t=1432559962, h=0x7f64eb5b6bd0, slow_l=0x7f64eb5ba328, slow_mark=43873) at timer.c:877<o:p></o:p></p>
<p class="MsoNormal">        tl = 0x7f64ebc3a908<o:p></o:p></p>
<p class="MsoNormal">        ret = 0<o:p></o:p></p>
<p class="MsoNormal">#1  0x0000000000602746 in timer_handler () at timer.c:953<o:p></o:p></p>
<p class="MsoNormal">        saved_ticks = 1432559962<o:p></o:p></p>
<p class="MsoNormal">        run_slow_timer = 0<o:p></o:p></p>
<p class="MsoNormal">        i = 865<o:p></o:p></p>
<p class="MsoNormal">        __FUNCTION__ = "timer_handler"<o:p></o:p></p>
<p class="MsoNormal">#2  0x0000000000602bb9 in timer_main () at timer.c:992<o:p></o:p></p>
<p class="MsoNormal">No locals.<o:p></o:p></p>
<p class="MsoNormal">#3  0x00000000004a833c in main_loop () at main.c:1700<o:p></o:p></p>
<p class="MsoNormal">        i = 4<o:p></o:p></p>
<p class="MsoNormal">        pid = 0<o:p></o:p></p>
<p class="MsoNormal">        si = 0x0<o:p></o:p></p>
<p class="MsoNormal">        si_desc = "udp receiver child=3 sock=127.0.0.1:5060\000\375\362\250/\313\345\v\004\000\000\000\000\000\000\000\004\257\263=\000\000\000\000\200TA\000\000\000\000\000\060}i\226\377\177", '\000' <repeats 19 times>, "{i\226\377\177\000\000\376\366R\000\000\000\000\000\377\377\377\377\377\177\000\000@\350\250\000\000\000\000"<o:p></o:p></p>
<p class="MsoNormal">        nrprocs = 4<o:p></o:p></p>
<p class="MsoNormal">        __FUNCTION__ = "main_loop"<o:p></o:p></p>
<p class="MsoNormal">#4  0x00000000004ad857 in main (argc=13, argv=0x7fff96697d38) at main.c:2578<o:p></o:p></p>
<p class="MsoNormal">        cfg_stream = 0x1b94010<o:p></o:p></p>
<p class="MsoNormal">        c = -1<o:p></o:p></p>
<p class="MsoNormal">        r = 0<o:p></o:p></p>
<p class="MsoNormal">        tmp = 0x7fff96699b17 ""<o:p></o:p></p>
<p class="MsoNormal">        tmp_len = 0<o:p></o:p></p>
<p class="MsoNormal">        port = 1<o:p></o:p></p>
<p class="MsoNormal">        proto = 32767<o:p></o:p></p>
<p class="MsoNormal">        options = 0x703e08 ":f:cm:M:dVIhEeb:l:L:n:vKrRDTN:W:w:t:u:g:P:G:SQ:O:a:A:"<o:p></o:p></p>
<p class="MsoNormal">        ret = -1<o:p></o:p></p>
<p class="MsoNormal">        seed = 2591880768<o:p></o:p></p>
<p class="MsoNormal">        rfd = 4<o:p></o:p></p>
<p class="MsoNormal">        debug_save = 0<o:p></o:p></p>
<p class="MsoNormal">        debug_flag = 0<o:p></o:p></p>
<p class="MsoNormal">        dont_fork_cnt = 0<o:p></o:p></p>
<p class="MsoNormal">        n_lst = 0x0<o:p></o:p></p>
<p class="MsoNormal">        p = 0x7fff96697c50 ""<o:p></o:p></p>
<p class="MsoNormal">        __FUNCTION__ = "main"<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">In the logs it can be seen</span>:<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">Apr 23 08:07:31 ctsip1 /usr/local/sbin/kamailio[4635]: CRITICAL: <core> [pass_fd.c:293]: receive_fd(): EOF on 21<o:p></o:p></p>
<p class="MsoNormal">Apr 23 08:07:31 ctsip1 /usr/local/sbin/kamailio[4612]: ALERT: <core> [main.c:784]: handle_sigs(): child process 4623 exited by a signal 11<o:p></o:p></p>
<p class="MsoNormal">Apr 23 08:07:31 ctsip1 /usr/local/sbin/kamailio[4612]: ALERT: <core> [main.c:787]: handle_sigs(): core was generated<o:p></o:p></p>
<p class="MsoNormal">Apr 23 08:07:31 ctsip1 /usr/local/sbin/kamailio[4612]: INFO: <core> [main.c:799]: handle_sigs(): terminating due to SIGCHLD<o:p></o:p></p>
<p class="MsoNormal">Apr 23 08:07:31 ctsip1 /usr/local/sbin/kamailio[4631]: INFO: <core> [main.c:850]: sig_usr(): signal 15 received<o:p></o:p></p>
<p class="MsoNormal">Apr 23 08:07:31 ctsip1 /usr/local/sbin/kamailio[4628]: INFO: <core> [main.c:850]: sig_usr(): signal 15 received<o:p></o:p></p>
<p class="MsoNormal">Apr 23 08:07:31 ctsip1 /usr/local/sbin/kamailio[4634]: INFO: <core> [main.c:850]: sig_usr(): signal 15 received<o:p></o:p></p>
<p class="MsoNormal">Apr 23 08:07:31 ctsip1 /usr/local/sbin/kamailio[4615]: INFO: <core> [main.c:850]: sig_usr(): signal 15 received<o:p></o:p></p>
<p class="MsoNormal">Apr 23 08:07:31 ctsip1 /usr/local/sbin/kamailio[4617]: INFO: <core> [main.c:850]: sig_usr(): signal 15 received<o:p></o:p></p>
<p class="MsoNormal">Apr 23 08:07:31 ctsip1 /usr/local/sbin/kamailio[4626]: INFO: <core> [main.c:850]: sig_usr(): signal 15 received<o:p></o:p></p>
<p class="MsoNormal">Apr 23 08:07:31 ctsip1 /usr/local/sbin/kamailio[4625]: INFO: <core> [main.c:850]: sig_usr(): signal 15 received<o:p></o:p></p>
<p class="MsoNormal">Apr 23 08:07:31 ctsip1 /usr/local/sbin/kamailio[4624]: INFO: <core> [main.c:850]: sig_usr(): signal 15 received<o:p></o:p></p>
<p class="MsoNormal">Apr 23 08:07:31 ctsip1 /usr/local/sbin/kamailio[4632]: INFO: <core> [main.c:850]: sig_usr(): signal 15 received<o:p></o:p></p>
<p class="MsoNormal">Apr 23 08:07:31 ctsip1 /usr/local/sbin/kamailio[4622]: INFO: <core> [main.c:850]: sig_usr(): signal 15 received<o:p></o:p></p>
<p class="MsoNormal">Apr 23 08:07:31 ctsip1 /usr/local/sbin/kamailio[4621]: INFO: <core> [main.c:850]: sig_usr(): signal 15 received<o:p></o:p></p>
<p class="MsoNormal">Apr 23 08:07:31 ctsip1 /usr/local/sbin/kamailio[4620]: INFO: <core> [main.c:850]: sig_usr(): signal 15 received<o:p></o:p></p>
<p class="MsoNormal">Apr 23 08:07:31 ctsip1 /usr/local/sbin/kamailio[4619]: INFO: <core> [main.c:850]: sig_usr(): signal 15 received<o:p></o:p></p>
<p class="MsoNormal">Apr 23 08:07:31 ctsip1 /usr/local/sbin/kamailio[4618]: INFO: <core> [main.c:850]: sig_usr(): signal 15 received<o:p></o:p></p>
<p class="MsoNormal">Apr 23 08:07:31 ctsip1 /usr/local/sbin/kamailio[4616]: INFO: <core> [main.c:850]: sig_usr(): signal 15 received<o:p></o:p></p>
<p class="MsoNormal">Apr 23 08:07:31 ctsip1 /usr/local/sbin/kamailio[4635]: INFO: <core> [main.c:850]: sig_usr(): signal 15 received<o:p></o:p></p>
<p class="MsoNormal">Apr 23 08:07:31 ctsip1 /usr/local/sbin/kamailio[4614]: INFO: <core> [main.c:850]: sig_usr(): signal 15 received<o:p></o:p></p>
<p class="MsoNormal">Apr 23 08:07:31 ctsip1 /usr/local/sbin/kamailio[4629]: INFO: <core> [main.c:850]: sig_usr(): signal 15 received<o:p></o:p></p>
<p class="MsoNormal">Apr 23 08:07:31 ctsip1 /usr/local/sbin/kamailio[4627]: INFO: <core> [main.c:850]: sig_usr(): signal 15 received<o:p></o:p></p>
<p class="MsoNormal">Apr 23 08:07:31 ctsip1 /usr/local/sbin/kamailio[4633]: INFO: <core> [main.c:850]: sig_usr(): signal 15 received<o:p></o:p></p>
<p class="MsoNormal">Apr 23 08:07:31 ctsip1 /usr/local/sbin/kamailio[4630]: INFO: <core> [main.c:850]: sig_usr(): signal 15 received<o:p></o:p></p>
<p class="MsoNormal">Apr 23 08:07:31 ctsip1 /usr/local/sbin/kamailio[4612]: INFO: <core> [mem/f_malloc.c:599]: fm_free(): freeing a free fragment (0x7f64eca19950/0x7f64eca19988) - ignore<o:p></o:p></p>
<p class="MsoNormal">Apr 23 08:07:31 ctsip1 /usr/local/sbin/kamailio[4612]: INFO: <core> [mem/f_malloc.c:599]: fm_free(): freeing a free fragment (0x7f64ed587f20/0x7f64ed587f58) - ignore<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">Kamailio runs on Ubuntu trusty. The interesting thing that we run Kamailio 4.2.3 in an other environment (on Debian Squeeze) and it works perfect, no crashes. The main difference is that in Debian environment we have less number of users
 and the firewall is not so strength. But the configuration and the source is the same for both.<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">Please help us to solve this problem. Thanks. <o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><b><span lang="EN-US" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#1F497D;mso-fareast-language:HU">Péter</span></b><o:p></o:p></p>
<pre>_______________________________________________<o:p></o:p></pre>
<pre>SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list<o:p></o:p></pre>
<pre><a href="mailto:sr-users@lists.sip-router.org">sr-users@lists.sip-router.org</a><o:p></o:p></pre>
<pre><a href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a><o:p></o:p></pre>
</blockquote>
<p class="MsoNormal"><span style="font-size:12.0pt"><br>
<br>
<br>
</span><o:p></o:p></p>
<pre>-- <o:p></o:p></pre>
<pre>Daniel-Constantin Mierla<o:p></o:p></pre>
<pre><a href="http://twitter.com/#%21/miconda">http://twitter.com/#!/miconda</a> - <a href="http://www.linkedin.com/in/miconda">http://www.linkedin.com/in/miconda</a><o:p></o:p></pre>
<pre>Kamailio World Conference, May 27-29, 2015<o:p></o:p></pre>
<pre>Berlin, Germany - <a href="http://www.kamailioworld.com">http://www.kamailioworld.com</a><o:p></o:p></pre>
</blockquote>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Times New Roman",serif;mso-fareast-language:HU"><br>
<br>
<o:p></o:p></span></p>
<pre>-- <o:p></o:p></pre>
<pre>Daniel-Constantin Mierla<o:p></o:p></pre>
<pre><a href="http://twitter.com/#!/miconda">http://twitter.com/#!/miconda</a> - <a href="http://www.linkedin.com/in/miconda">http://www.linkedin.com/in/miconda</a><o:p></o:p></pre>
<pre>Kamailio World Conference, May 27-29, 2015<o:p></o:p></pre>
<pre>Berlin, Germany - <a href="http://www.kamailioworld.com">http://www.kamailioworld.com</a><o:p></o:p></pre>
</div>
</body>
</html>