Hi list,
Have fixed a BUG in gwlib/protected.c in line 99:.
For detailed problem description see in the list the subject of this
mail .
The main problem is the return code of 0 in the original file, it should
be -1.
Is the return code 0 so Kannel loops in a "state RESULT_WAIT, event
Timedout-A".
The wrong IP "192.1.1/foobar.wml" is not recognised as wrong IP, kannel
trys to lookup it in a loop.
The wrong IP "192.1.1./fobar.wml" is recognised as wrong IP and kannel
says "http lookup failed, oops" that's ok. [important is the last dot in
the IP.]
This rewritten code will fix that problem.
Cheers Bjoern
Here is that fixed part (it is not really nice programmed, I know, I'm
not a "C" programmer but it works, it was my first time :-))))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gwlib/protected.c [FIXED BUG]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/*
*
* FIXME :: BUG gethostbyname
*
*/
int ret;
struct hostent *p;
/*
int oct1,oct2,oct3,oct4; * IP addr.
*/
int valid;
valid=1;
sscanf(name,"%d.%d.%d.%d",&oct1,&oct2,&oct3,&oct4);
if ((oct1<0) || (oct1>255) || (oct1 == NULL)) { valid=0; }
if ((oct2<0) || (oct2>255) || (oct2 == NULL)) { valid=0; }
if ((oct3<0) || (oct3>255) || (oct3 == NULL)) { valid=0; }
if ((oct4<0) || (oct4>255) || (oct4 == NULL)) { valid=0; }
/*
* failed to get hostname or ip and die
*/
if (valid==0) {
ret = -1;
return ret;
}
lock(GETHOSTBYNAME);
p = gethostbyname(name);
if ((p == NULL))
ret = -1;
else {
ret = 0;
*ent = *p;
}
unlock(GETHOSTBYNAME);
return ret;
}
###########################################
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gwlib/protected.c [ORIGINAL]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{
int ret;
struct hostent *p;
lock(GETHOSTBYNAME);
p = gethostbyname(name);
if (p == NULL)
ret = -1;
else {
ret = 0;
*ent = *p;
}
unlock(GETHOSTBYNAME);
return ret;
}
#############################################
kind regards
Bjoern Buettner
Vodafone Information Systems GmbH
Daniel-Goldbach-Str. 17-19
D-40880 Ratingen
Tel.: +49-2102-97-2013
Fax: +49-2102-97-1310
mailto: [EMAIL PROTECTED]
http://www.vodafone.com
http://www.vodafone-is.de