Am 26.09.2016 19:38, schrieb Donald Jackson:
As I say this is semantics, its not entirely necessary.
Usually in library functions they are compatible with each other, eg:
SMPP_PDU *pdu = smpp_pdu_unpack(smpp_pdu_pack(data));
Would work, but in Kannel's case this doesn't work as the one function
uses length and the other does not. So the third party user has to now
worry about PDU internals to get the functions to work together.
yeah, but looping in a "use-less" if condition for ever SMPP unpacking,
JUST to make it sweet for the 3rd package is not justified IMO.
I.e. here is what I do in smppbox's gw lib code for duplicating an SMPP
PDU struct:
SMPP_PDU *smpp_pdu_duplicate(Octstr *esme, SMPP_PDU *pdu)
{
SMPP_PDU *ret = NULL;
Octstr *os, *os2;
gw_assert(pdu != NULL);
/*
* We use a kludge here, we pack the PDU
* then duplicate the packed data and unpack
* it again to a PDU structure.
*/
if ((os = SMPP_PDU_PACK(esme, pdu)) != NULL) {
/* remove first 4 bytes, length indicator */
os2 = octstr_copy(os, 4, octstr_len(os)-4);
octstr_destroy(os);
ret = SMPP_PDU_UNPACK(esme, os2);
octstr_destroy(os2);
}
return ret;
}
Stipe
--
Best Regards,
Stipe Tolj
-------------------------------------------------------------------
Düsseldorf, NRW, Germany
Kannel Foundation tolj.org system architecture
http://www.kannel.org/ http://www.tolj.org/
stolj at kannel.org st at tolj.org
-------------------------------------------------------------------