Hi people. Looking at the SMPP implementation we came onto this curios peice of code :
dlrmsg = dlr_find(octstr_get_cstr(smpp->conn->id), octstr_get_cstr(tmp), /* smsc message id */ octstr_get_cstr(msg->sms.receiver), /* destination */ (DLR_SMSC_SUCCESS|((msg->sms.dlr_mask & (DLR_SUCCESS|DLR_FAIL))?DLR_BUFFERED:0))); I think there is some logical problem here, but ignoring that, it safe to assume that on some conditions dlr_find will be called with two types of DLRs - which is OK by itself (I see no reason not to send two or mote types at the same time). The problems starts to present itself when we look at the code in dlr.c which creates the dlr msg to be sent : if ((typ & dlr_mask)) { /* its an entry we are interested in */ msg = msg_create(sms); msg->sms.service = octstr_duplicate(dlr_service); msg->sms.dlr_mask = typ; we see here that if typ contains more then one DLR type, then even if not all DLR types are required (set in dlr_mask for the sendsms), all DLR types set in typ will be sent out. this is not correct IMO - it should be something like : msg->sms.dlr_mask = typ & dlr_mask; Would like to hear your opinions , please.. -- Oded Arbel m-Wise Inc. [EMAIL PROTECTED] (972)-67-340014 (972)-9-9581711 (ext: 116) ::.. Let us so live that when we come to die even the undertaker will be sorry. -- Mark Twain