Index: channels/chan_sip.c =================================================================== RCS file: /usr/cvsroot/asterisk/channels/chan_sip.c,v retrieving revision 1.567 diff -u -r1.567 chan_sip.c --- channels/chan_sip.c 16 Nov 2004 03:58:46 -0000 1.567 +++ channels/chan_sip.c 18 Dec 2004 01:18:27 -0000 @@ -455,6 +455,7 @@ int pokeexpire; /* When to expire poke (qualify= checking) */ int lastms; /* How long last response took (in ms), or -1 for no response */ int maxms; /* Max ms we will accept for the host to be up, 0 to not monitor */ + int retransms; /* Retransmission time (in ms)*/ struct timeval ps; /* Ping send time */ struct sockaddr_in defaddr; /* Default IP address, used until registration */ @@ -735,7 +736,10 @@ if (fatal) pkt->flags |= FLAG_FATAL; /* Schedule retransmission */ - pkt->retransid = ast_sched_add(sched, DEFAULT_RETRANS, retrans_pkt, pkt); + if (p->peerpoke) + pkt->retransid = ast_sched_add(sched, p->peerpoke->retransms, retrans_pkt, pkt); + else + pkt->retransid = ast_sched_add(sched, DEFAULT_RETRANS, retrans_pkt, pkt); pkt->next = p->packets; p->packets = pkt; __sip_xmit(pkt->owner, pkt->data, pkt->packetlen); @@ -7979,7 +7983,7 @@ transmit_invite(p, "OPTIONS", 0, NULL, NULL, NULL,NULL,NULL, 1); #endif gettimeofday(&peer->ps, NULL); - peer->pokeexpire = ast_sched_add(sched, DEFAULT_MAXMS * 2, sip_poke_noanswer, peer); + peer->pokeexpire = ast_sched_add(sched, peer->maxms * 2, sip_poke_noanswer, peer); return 0; } @@ -8357,6 +8361,7 @@ peer->promiscredir = global_promiscredir; peer->trustrpid = global_trustrpid; peer->progressinband = global_progressinband; + peer->retransms = DEFAULT_RETRANS; #ifdef OSP_SUPPORT peer->ospauth = global_ospauth; #endif @@ -8495,6 +8500,11 @@ } else if (sscanf(v->value, "%d", &peer->maxms) != 1) { ast_log(LOG_WARNING, "Qualification of peer '%s' should be 'yes', 'no', or a number of milliseconds at line %d of sip.conf\n", peer->name, v->lineno); peer->maxms = 0; + } + } else if (!strcasecmp(v->name, "retransmit")) { + if (sscanf(v->value, "%d", &peer->retransms) != 1) { + ast_log(LOG_WARNING, "Retransmission interval for peer '%s' should be number of milliseconds at line %d of sip.conf\n", peer->name, v->lineno); + peer->retransms = DEFAULT_RETRANS; } } else if (!strcasecmp(v->name, "useclientcode")) { peer->useclientcode = ast_true(v->value);