Hi there,
Thanks a lot for the report - you are right - an unlock was missing. I
made the fix on both trunk and 1.2.
Please update from SVN.
Regards,
Bogdan
rubel Ahmed wrote:
Hi,
I am using Openser-1.2.1-notls.
I think there is a problem in function "mi_print_dlgs()" of file
modules/dialog/dlg_hash.c
in line number 449, there is a dlg_lock() function call,
after this in the next for loop block (starts from line 451 to 496)
some goto error labels used, but in that error label dlg_unblock()
function has never been called.
For that reason I think if there is no dlg_unlock() function call from
"error:" (label) then it may cause
a deadlock situation in openser, when next dlg_lock() try to be called.
Thats why I think there should be a dlg_unlock() function call in the
"error:" block.
448 for( i=0 ; i<d_table->size ; i++ ) {
449 dlg_lock( d_table, &(d_table->entries[i]) );
450
451 for( dlg=d_table->entries[i].first ; dlg ; dlg=dlg->next ) {
452 node = add_mi_node_child(rpl, 0, "dialog",6 , 0, 0 );
453 if (node==0)
454 goto error;
***
***
***
496 } /* This is the end of 2nd for loop*/
497 dlg_unlock( d_table, &(d_table->entries[i]) );
498 }
/* Inthe following Error code no dlg_unlock() called */
501 error:
502 LOG(L_ERR,"ERROR:mi_ps: failed to add node\n");
503 free_mi_tree(rpl_tree);
504 return 0;
Sorry for my poor English.
Regards,
Salah Uddin Ahmed
------------------------------------------------------------------------
_______________________________________________
Devel mailing list
Devel@openser.org
http://openser.org/cgi-bin/mailman/listinfo/devel
_______________________________________________
Devel mailing list
Devel@openser.org
http://openser.org/cgi-bin/mailman/listinfo/devel