resolver bug and a fix?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi all!

I am using PJSIP 1.4.5 on Symbian platform with the pjsua interface, and I also specify the nameservers for pjsua.
If I have outstanding nameserver queries, when I call pjsua_destroy(), a bit later I get an assertation in file
os_core_symbian.cpp, line 848. This is the pj_mutex_lock() function. The caller function was on_timeout() in resolver.c.
It was easy to figure out, that the assertation is because the querry timeout entry is not removed from the timer, I did the following modification in
in resolver.c line 355, pj_dns_resolver_destroy():

/*
       * Notify pending queries if requested, and cancel timer entries
       */
      it = pj_hash_first(resolver->hquerybyid, &it_buf);
      while (it) {
          pj_dns_async_query *q = (pj_dns_async_query *)
                            pj_hash_this(resolver->hquerybyid, it);
          pj_dns_async_query *cq;
          if (notify && q->cb) {
                  (*q->cb)(q->user_data, PJ_ECANCELLED, NULL);
                  }
          pj_timer_heap_cancel( resolver->timer,  &q->timer_entry );

          cq = q->child_head.next;
          while (cq != (pj_dns_async_query*)&q->child_head) {
            if (notify && cq->cb) {
                (*cq->cb)(cq->user_data, PJ_ECANCELLED, NULL);
                  }
            pj_timer_heap_cancel( resolver->timer,  &cq->timer_entry );
            cq = cq->next;
          }
          it = pj_hash_next(resolver->hquerybyid, it);
      }

As you can see I canceled the outstanding timer entries, if there are any.
I hope this helps.

Br,
Gabor

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/attachments/20091204/d0006486/attachment-0001.html>


[Index of Archives]     [Asterisk Users]     [Asterisk App Development]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [Linux API]
  Powered by Linux