Hi again,

I found a problem in Kannel gateway (CVS version).
Let's check scenario. Consider bearerbox and 1 smsbox named "some_box_id".

1) Start bearerbox, it is waiting for smsboxes.
2) Start smsbox with smsbox_id = "some_box_id", connect to bearerbox.
3) In bearerbox struct Boxc is created and made connection to smsbox.
Default shared list for incoming_sms is set for this smsbox connection.
4) Bearebox starts boxc_sender thread for connected smsbox and sender waits
for incoming_sms in shared list until some msg will arrive.
5) Smsbox identify itself as "some_box_id" and new private list for
incoming_sms is created, but previous cannot be destroyed because it is
shared.

But sender is still waiting on shared list!!! And it will wait forever. No
sms can be sent by smsbox "some_box_id".

I have patched this bug in local version by adding mutex to struct boxc and
forcing boxc_sender to wait on this mutex until smsbox will identify itself.
Then sender starts his real job.
Changed also smsbox.c to send cmd_identify even if boxc_id is NULL.

The patch is attached. I hope it removes problem.

Regards
Robert Galach

Attachment: smsbox.c.patch
Description: Binary data

Attachment: bb_boxc.c.patch
Description: Binary data

Reply via email to