Please open a bug and post your patch into the tracker, otherwise it
will be lost here.


Regards,
Ovidiu Sas

On Wed, Mar 12, 2008 at 1:35 PM, Stanisław Pitucha
<[EMAIL PROTECTED]> wrote:
> Hi all
>  There's a problem when running openser 1.3 with realtime db (maybe cached 
> too, but haven't checked). I'll just explain why we wanted to fix it in case 
> it should be fixed in some other way:
>
>  @modules/dialog/dlg_db_handler.c:
>  #define GET_STR_VALUE(_res, _values, _index, _not_null, _unref)\
>  do{\
>         if (VAL_NULL((_values)+ (_index))) { \
>                 if (_not_null) {\
>                         if (_unref) unref_dlg(dlg,1);\
>                         continue; \
>                 } else { \
>                         (_res).s = 0; \
>                         (_res).len = 0; \
>                 }\
>         } else { \
>                 (_res).s = VAL_STR((_values)+ (_index)).s;\
>                 (_res).len = strlen(VAL_STR((_values)+ (_index)).s);\
>         } \
>  }while(0);
>
>  I guess that "continue" is supposed to skip processing of dialog in 
> load_dialog_info_from_db(), but it won't really work, because continue is 
> only getting out of do{}while() macro loop - it leaves _res uninitialized and 
> continues processing. Fixed by removing "do" and "while" - GET_STR_VALUE 
> isn't used in parent "if" so it's safe currently.
>
>  Then there's destroy_dlg() @modules/dialog/dlg_hash.c which doesn't handle 
> dialog timer (if unref_dlg() was ran in previous case) - fixed by adding 
> remove_dlg_timer(&dlg->tl);
>
>  Another thing: get_expired_dlgs() @modules/dialog/dlg_timer.c:
>  race condition in:
>  ---
>  if (d_timer->first.next==&(d_timer->first)
>  || d_timer->first.next->timeout > time )
>         return 0;
>  lock_get( d_timer->lock);
>  ... (get other dialogs)
>  ---
>  it should probably be locked before checking.
>
>  Patch attached.
> _______________________________________________
>  Devel mailing list
>  Devel@lists.openser.org
>  http://lists.openser.org/cgi-bin/mailman/listinfo/devel
>
>
_______________________________________________
Devel mailing list
Devel@lists.openser.org
http://lists.openser.org/cgi-bin/mailman/listinfo/devel

Reply via email to