**>To: [email protected]
**>From: Alexander Malysh <[EMAIL PROTECTED]>
**>Subject: Re: fluctuating between XXX_UNDEF and '-1' in Kannel code
**>Date: Fri, 18 Feb 2005 15:26:53 +0100
**>
**>Hi Davy,
**>
**>Davy Chan wrote:
**>
**>> Statement:
**>>   We are now using -1 as the definition for an undefined value:
**>>     DLR_UNDEFINED = MSG_PARAM_UNDEFINED = SMS_PARAM_UNDEFINED =
**>>     MC_UNDEF = MWI_UNDEF = DC_UNDEF = COMPRESS_UNDEF = RPI_UNDEF
**>>     = -1
**>
**>hmm, don't have code to check now but IIRC we have onl MSG_PARAM_UNDEFINED &
**>SMS_PARAM_UNDEFINED.
**>that was intentional so that MSG_PARAM_UNDEFINED may have another undefined
**>value as SMS_PARAM_UNDEFINED.

Actually, in gateway/gw/sms.h, the other UNDEF's are defined there. Of
course, currently, they are defined based on the SMS_PARAM_UNDEFINED which
is based on MSG_PARAM_UNDEFINED.

But, the other UNDEFs are in the header, and I think they should be
used instead of -1 in gateway/gw/smsbox.c:smsbox_req_handle(). As
a matter of fact, my patch will use the defined symbols as
much as possible. Fixed two bugs (rpi cannot be greater than 1 not 2; and
alt_dcs can be greater than 1 [max is 2]) by using the defines instead
of hardcoding the values.

**>
**>> 
**>> Problem:
**>>   1) Some of our code still has '-1' hardcoded instead of using the
**>>      symbolic XXX_UNDEF.
**>
**>this should be fixed
**>
**>>   2) Some places in the code have a comparison to '-1' to check for
**>>      an undefined value instead of using the symbolic XXX_UNDEF.
**>
**>ditto
**>
**>>   3) Some places in the code use a comparison to '-1' to check for
**>>      an undefined value because we did not specify a symbolic
**>>      name for an undefined value (usually return values from
**>>      the gwlib functions).
**>
**>we should not define all undefined values as you write above. sms messages
**>should check against SMS_PARAM_UNDEFINED and global msg values (not sms
**>specific) against MSG_PARAM_UNDEFINED.

Sorry.  Not as clear as I should have been.  I mean to use SMS_PARAM_UNDEFINED,
MSG_PARAM_UNDEFINED, DLR_UNDEFINED, MC_UNDEF,  MWI_UNDEF, DC_UNDEF,
COMPRESS_UNDEF, and RPI_UNDEF where appliable.  When a -1 is present
where it is not related to SMS or MSG (e.g. octstr functions and
conn connections), then use IS_UNDEFINED.

Doing it this way allowed me to find another bug in the code in
gateway/gw/wap_push_pap_compiler.c:parse_attribute(). Down in the
code, there's a check to see if set_attribute_value() returns -1 or
not.  Well, set_attribute_value() cannot return -1.  It can only
return [-2,0,1,2,3]. They correspond to the values returned by
parse_requirements(), parse_priority(), and parse_delivery_method().

**>> 
**>> Proposed Remedy:
**>>   1) Add the definition:
**>>        #define IS_UNDEFINED -1
**>>      into gateway/gwlib/gwlib.h
**>>   2) Go through the code and change comparisions to '-1' into
**>>      comparisions to IS_UNDEFINED.
**>>   3) Go through the code and change assignments to '-1' to
**>>      assignments to the proper XXX_UNDEF for that variable.
**>> 
**>> I voluntee to do this if everyone feels this type of code cleanup
**>> is desired. (yeah, this is annoying the heck out of me while I'm coding
**>> my statusbox stuff).

I've got most of it done.  Will try compiling and running it now...

See ya...

d.c.

Reply via email to