Hi, list.
Yury Mikhienko wrote:
I changed kannel source for dumping the next information:
in wapbox.log now:
2002-11-12 09:21:45 [1] DEBUG: WSP 227/4150: New method state REPLYING
2002-11-12 09:21:45 [1] DEBUG: WSP 227: New state CONNECTED
2002-11-12 09:21:45 [2] WARNING: WSP PDU with unknown type -1
2002-11-12 09:21:45 [2] WARNING: Incoming Octetstr has been dumped!!!
2002-11-12 09:21:45 [2] DEBUG: Octet string at 0x89a77c8:
2002-11-12 09:21:45 [2] DEBUG: len: 74
2002-11-12 09:21:45 [2] DEBUG: size: 76
2002-11-12 09:21:45 [2] DEBUG: immutable: 0
2002-11-12 09:21:45 [2] DEBUG: data: 73 5a 12 01 10 13 30 04 sZ....0.
2002-11-12 09:21:45 [2] DEBUG: data: 80 86 a0 00 04 81 92 a7 ........
2002-11-12 09:21:45 [2] DEBUG: data: 60 02 82 00 02 83 05 02 `.......
2002-11-12 09:21:45 [2] DEBUG: data: 84 01 80 80 83 99 81 ea ........
2002-11-12 09:21:45 [2] DEBUG: data: a9 4e 6f 6b 69 61 37 36 .Nokia76
2002-11-12 09:21:45 [2] DEBUG: data: 35 30 2f 31 2e 30 20 53 50/1.0 S
2002-11-12 09:21:45 [2] DEBUG: data: 79 6d 62 69 61 6e 4f 53 ymbianOS
2002-11-12 09:21:45 [2] DEBUG: data: 2f 36 2e 31 20 53 65 72 /6.1 Ser
2002-11-12 09:21:45 [2] DEBUG: data: 69 65 73 36 30 2f 30 2e ies60/0.
2002-11-12 09:21:45 [2] DEBUG: data: 39 00 9.
2002-11-12 09:21:45 [2] DEBUG: Octet string dump ends.
################################################################################
2002-11-12 09:21:45 [6] DEBUG: Thread 6 (gw/wap-appl.c:main_thread) terminates.
################################################################################
How can I solve this? May be I shall apply another SAR patch (which one?)?
Or this problen can be solved another way?
Now I solved the problem with dirty hack the gwthread-pthread.c:
in:
static void *new_thread(void *arg)
{
int ret;
struct new_thread_args *p = arg;
....
(p->func)(p->arg);
/* Changed by me */
do
{
lock();
debug("gwlib.gwthread", 0, "Thread %ld (%s) terminates. ",
p->ti->number, p->ti->name);
debug("gwlib.gwthread", 0, "Try up Thread %ld (%s). ",
p->ti->number, p->ti->name);
unlock();
ret = pthread_setspecific(tsd_key, p->ti);
if (ret != 0) {
panic(ret, "gwthread-pthread: pthread_setspecific failed");
}
(p->func)(p->arg);
}while(p->ti->number==6 && !strcmp(p->ti->name,"gw/wap-appl.c:main_thread"));
//******************************
....
};
It works, but it is not a good way :((
Thanx.
Seems that there is bug in wsp_unit.c
static void main_thread(void *arg) {
WAPEvent *e;
WAPEvent *newevent;
while (run_status == running && (e = list_consume(queue)) != NULL) {
wap_event_assert(e);
switch (e->type) {
case T_DUnitdata_Ind:
newevent = unpack_datagram(e);
/* MUST BE INSERTED if (newevent != NULL) */
dispatch_to_appl(newevent);
unpack_datagram returns NULL
(> 2002-11-12 09:21:45 [2] WARNING: WSP PDU with unknown type -1)
and dispatch NULL to wap-appl.c
So later in wap-appl.c we have (main_thread):
while (run_status == running && (ind = list_consume(queue)) != NULL) {
}
and list_consume breaks the loop and
> 2002-11-12 09:21:45 [6] DEBUG: Thread 6 (gw/wap-appl.c:main_thread) terminates.
So any following requests will not be processed.
I think we must insert check for NULL (see above, line /* MUST BE INSERTED)
--
Vjacheslav Chekushin mailto:[EMAIL PROTECTED]
Latvian Mobile Phone Company http://www.lmt.lv