Hi,
On Monday 25 August 2003 13:38, Stipe Tolj wrote:
> Paul Keogh wrote:
> > In boxc_sender (), the code
> >
> > /* wait for smsbox identification */
> > if (bb_status != BB_DEAD && conn->alive && conn->is_wap == 0) {
> > mutex_lock(conn->boxc_id_mutex);
> > debug("bb.boxc", 0, "boxc_sender: sender unlocked");
> > mutex_unlock(conn->boxc_id_mutex);
> > }
> >
> > means that this thread waits until a cmd_identity message is received.
> > However, if a client simply connects and disconnects to the SMS Box
> > port, then this thread never exits. This is easy to test with a simple
> > script that makes a TCP connect() to the port and then closes
> > immediately.
> >
> > I think some code is needed in boxc_receive() to cater for this; ie.
> >
> > msg = read_from_box(conn);
> >
> > if (msg == NULL) { /* garbage/connection lost */
> > conn->alive = 0;
here we need something like:
if (mutex_try_lock(conn->boxc_id_mutex))
mutex_unlock(conn->boxc_id_mutex);
Stipe, please take a mutex_try_lock patch from centrium's tree, I am busy now
:(
> > if (conn -> boxc_id == NULL)
> > mutex_unlock(conn->boxc_id_mutex);
> > break;
> > }
> >
> > so if the boxc_id is NULL, no cmd_identity message has been received and
> > the corresponding boxc_sender() thread is still blocked on the
> > conn->boxc_id_mutex
> > mutex.
>
> agreed. Sounds reasonable.
>
> BTW, can someone tell me why the mutex_unlock() *after* the
> mutex_lock() is necessary in the boxc_sender() block?!
>
> When cmd_identify is received the boxc_receiver() thread unlock's the
> mutex and the debug is thrown. Why does it have to unlock once again
> there?
>
> Stipe
>
> [EMAIL PROTECTED]
> -------------------------------------------------------------------
> Wapme Systems AG
>
> Vogelsanger Weg 80
> 40470 D�sseldorf
>
> Tel: +49-211-74845-0
> Fax: +49-211-74845-299
>
> E-Mail: [EMAIL PROTECTED]
> Internet: http://www.wapme-systems.de
> -------------------------------------------------------------------
> wapme.net - wherever you are
--
Best regards / Mit besten Gr��en aus D�sseldorf
Dipl.-Ing.
Alexander Malysh
___________________________________________
Centrium GmbH
Vogelsanger Weg 80
40470 D�sseldorf
Fon: +49 (0211) 74 84 51 80
Fax: +49 (0211) 277 49 109
email: a.malysh at centrium.de
web: www.centrium.de
msn: olek2002 at hotmail.com
icq: 98063111
___________________________________________
Please avoid sending me Word or PowerPoint attachments.
See http://www.fsf.org/philosophy/no-word-attachments.html