All pastes #251180 Raw Edit

Anonymous

public text v1 · immutable
#251180 ·published 2006-11-17 21:07 UTC
rendered paste body
--- send_request        2006-11-17 15:06:19.000000000 -0600
+++ send_response       2006-11-17 15:05:20.000000000 -0600
@@ -1,41 +1,39 @@
-static int send_request(struct sip_pvt *p, struct sip_request *req, int reliable, int seqno)
+static int send_response(struct sip_pvt *p, struct sip_request *req, int reliable, int seqno)
 {
-    int res=0;
+    int res = 0;
     char iabuf[INET_ADDRSTRLEN];
     struct sip_request tmp;
     char tmpmsg[80];
 
-    sip_rebuild_payload(p, req, 0);
-
     if (stun_active  &&  p->stun_needed == 1)
     {
-        opbx_log(LOG_DEBUG,"This call request %s seqno %d really needs STUN - sched %d\n",p->callid,seqno,p->stun_resreq_id);
+        opbx_log(LOG_DEBUG,"This call response %s seqno %d really needs STUN - sched %d\n",p->callid,seqno,p->stun_resreq_id);
 
         struct sip_reqresp *rr;
-
-        rr = malloc(sizeof(struct sip_reqresp));
+        rr = malloc(sizeof(struct sip_reqresp)); 
         memset(rr, 0, sizeof(struct sip_reqresp));
-        rr->type = 2;
+        rr->type = 1;
         rr->reliable = reliable;
         rr->seqno = seqno;
         memcpy(&rr->req, req, sizeof(struct sip_request));
         memcpy(&rr->callid, p->callid, sizeof(p->callid));
         rr->p = p;
         rr->p->stun_retrans_no = 0;
-        rr->streq = opbx_udp_stun_bindrequest(sipsock,&stunserver_ip,NULL,NULL);
-        memcpy(&rr->p->stun_transid,&rr->streq->req_head.id,sizeof(stun_trans_id) );
-        if (p->rtp  &&  opbx_rtp_get_stunstate(p->rtp) == 0)
+        rr->streq = opbx_udp_stun_bindrequest(sipsock, &stunserver_ip, NULL, NULL);
+        memcpy(&rr->p->stun_transid, &rr->streq->req_head.id, sizeof(stun_trans_id));
+
+        if (p->rtp  &&  !opbx_rtp_get_stunstate(p->rtp))
         {
             opbx_log(LOG_DEBUG, "Setting NAT on RTP to %d\n", (opbx_test_flag(p, SIP_NAT) & SIP_NAT_ROUTE) && p->stun_needed );
             opbx_rtp_setnat(p->rtp, (opbx_test_flag(p, SIP_NAT) & SIP_NAT_ROUTE) && p->stun_needed );
         }
-        if (p->vrtp  &&  opbx_rtp_get_stunstate(p->vrtp) == 0)
+        if (p->vrtp  &&  !opbx_rtp_get_stunstate(p->vrtp))
         {
             opbx_log(LOG_DEBUG, "Setting NAT on VRTP to %d\n", (opbx_test_flag(p, SIP_NAT) & SIP_NAT_ROUTE) && p->stun_needed );
             opbx_rtp_setnat(p->vrtp, (opbx_test_flag(p, SIP_NAT) & SIP_NAT_ROUTE) && p->stun_needed );
         }
 #if T38_SUPPORT
-        if (p->udptl  &&  opbx_udptl_get_stunstate(p->udptl) == 0)
+        if (p->udptl  &&  !opbx_udptl_get_stunstate(p->udptl))
         {
             opbx_log(LOG_DEBUG, "Setting NAT on UDPTL to %d\n", (opbx_test_flag(p, SIP_NAT) & SIP_NAT_ROUTE) && p->stun_needed );
             opbx_udptl_setnat(p->udptl, (opbx_test_flag(p, SIP_NAT) & SIP_NAT_ROUTE) && p->stun_needed );
@@ -44,8 +42,8 @@
         if (rr->streq)
         {
             if (stundebug)
-                opbx_log(LOG_DEBUG,"** Sent STUN packet for request %d\n",rr->streq->req_head.id.id[0]);
-                        rr->p->stun_resreq_id=opbx_sched_add(sched, STUN_WAIT_RETRY_TIME, sip_resend_reqresp, rr);
+                opbx_log(LOG_DEBUG,"** Sent STUN packet for response %d\n",rr->streq->req_head.id.id[0]);
+            rr->p->stun_resreq_id = opbx_sched_add(sched, STUN_WAIT_RETRY_TIME, sip_resend_reqresp, rr);
             return 0;
         }
         else
@@ -56,13 +54,15 @@
     else if (p->stun_needed == 2)
     {
         if (stundebug)
-        opbx_log(LOG_DEBUG,"This transmit request has already a stun %d\n",p->stun_needed);
-        sip_rebuild_payload(p,req,1);
+            opbx_log(LOG_DEBUG,"This transmit response has already a stun %d\n",p->stun_needed);
+        sip_rebuild_payload(p, req, 1);
     }
     else
     {
-        if (stundebug) opbx_log(LOG_DEBUG,"This transmit request has stun at %d\n",p->stun_needed);
-        sip_rebuild_payload(p,req,0);
+        if (stundebug)
+            opbx_log(LOG_DEBUG,"This transmit response has stun at %d\n",p->stun_needed);
+        sip_rebuild_payload(p, req, 0);
+
     }
 
     if (sip_debug_test_pvt(p))
@@ -72,15 +72,16 @@
         else
             opbx_verbose("%sTransmitting (no NAT) to %s:%d:\n%s\n---\n", reliable ? "Reliably " : "", opbx_inet_ntoa(iabuf, sizeof(iabuf), p->sa.sin_addr), ntohs(p->sa.sin_port), req->data);
     }
+
     if (reliable)
     {
         if (recordhistory)
         {
             parse_copy(&tmp, req);
             snprintf(tmpmsg, sizeof(tmpmsg), "%s / %s", tmp.data, get_header(&tmp, "CSeq"));
-            append_history(p, "TxReqRel", tmpmsg);
+            append_history(p, "TxRespRel", tmpmsg);
         }
-        res = __sip_reliable_xmit(p, seqno, 0, req->data, req->len, (reliable > 1), req->method);
+        res = __sip_reliable_xmit(p, seqno, 1, req->data, req->len, (reliable > 1), req->method);
     }
     else
     {
@@ -88,11 +89,11 @@
         {
             parse_copy(&tmp, req);
             snprintf(tmpmsg, sizeof(tmpmsg), "%s / %s", tmp.data, get_header(&tmp, "CSeq"));
-            append_history(p, "TxReq", tmpmsg);
+            append_history(p, "TxResp", tmpmsg);
         }
         res = __sip_xmit(p, req->data, req->len);
     }
-    p->stun_needed=0;
+    p->stun_needed = 0;
     sip_dealloc_headsdp_lines(req);
     return res;
 }