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

Reply via email to