Yeah, I read up no gdb's list command and this seems wrong. I've downloaded the kamailio source code via apt-get source and these are the lines around line 3060 in pv_core.c:

3050         hdr = msg->contact;                                                                                                     
3051         while(hdr) {                                                                                                            
3052             if (hdr->type == HDR_CONTACT_T) {                                                                                   
3053                 if (!hdr->parsed && (parse_contact(hdr) < 0)) {                                                                 
3054                     LM_ERR("failed to parse Contact body\n");                                                                   
3055                     return pv_get_null(msg, param, res);                                                                        
3056                 }                                                                                                               
3057                 c = ((contact_body_t*)hdr->parsed)->contacts;                                                                   
3058                 while(c) {                                                                                                      
3059                     c = c->next;                                                                                                
3060                     if(c->expires && c->expires->body.len) {                                                                    
3061                         if (str2int(&c->expires->body, &eval) < 0) {                                                            
3062                             LM_ERR("failed to parse expires\n");                                                                
3063                             return pv_get_null(msg, param, res);                                                                
3064                         }                                                                                                       
3065                         efound = 1;                                                                                             
3066                         if(eval>exp_max) exp_max = eval;                                                                        
3067                         if(eval<exp_min) exp_min = eval;                                                                        
3068                     } else if(msg->expires && msg->expires->parsed) {                                                           
3069                         eval = ehdr;                                                                                            
3070                         efound = 1; 

Shouldn't c = c->next be at the end of the while loop?


Reply to this email directly or view it on GitHub.