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
-------------------------------------------------------------------