Re: [PATCH] KSMPPD (and other?) utility methods for smpp_pdu.c
Stipe Tolj <[email protected]> Mon, 26 Sep 2016 19:43:32 +0200
| Newsgroups | gmane.comp.mobile.kannel.devel |
|---|---|
| Organization | Kannel Software Foundation (KSF) |
| Message-ID | <[email protected]> |
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
-------------------------------------------------------------------