--- chan_sip.c_before_timestamps 2004-05-17 22:14:47.000000000 -0400 +++ chan_sip.c 2004-05-17 22:22:15.000000000 -0400 @@ -519,15 +519,28 @@ return sip_debug_test_addr((p->nat ? &p->recv : &p->sa)); } +/* provide a time stamp for debug packet traces */ +static inline int dbg_pkt_stamp(void) { + return (int)time(0); +} +/* the formats for SIP packet traces */ +#define FORMAT_tx "\n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Tx %d %s:%d Transmitted Packet\n%s\n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Tx\n" +#define FORMAT_rx "\n>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Rx %d %s:%d Received Packet\n%s\n>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Rx\n" /*--- __sip_xmit: Transmit SIP message ---*/ static int __sip_xmit(struct sip_pvt *p, char *data, int len) { int res; - if (p->nat) - res=sendto(sipsock, data, len, 0, (struct sockaddr *)&p->recv, sizeof(struct sockaddr_in)); - else - res=sendto(sipsock, data, len, 0, (struct sockaddr *)&p->sa, sizeof(struct sockaddr_in)); + if (p->nat) { + res=sendto(sipsock, data, len, 0, (struct sockaddr *)&p->recv, sizeof(struct sockaddr_in)); + if (sip_debug_test_pvt(p)) + ast_verbose(FORMAT_tx, dbg_pkt_stamp(), inet_ntoa(p->recv.sin_addr), ntohs(p->recv.sin_port), data); + + } else { + res=sendto(sipsock, data, len, 0, (struct sockaddr *)&p->sa, sizeof(struct sockaddr_in)); + if (sip_debug_test_pvt(p)) + ast_verbose(FORMAT_tx, dbg_pkt_stamp(), inet_ntoa(p->sa.sin_addr), ntohs(p->sa.sin_port), data); + } if (res != len) { ast_log(LOG_WARNING, "sip_xmit of %p (len %d) to %s returned %d: %s\n", data, len, inet_ntoa(p->sa.sin_addr), res, strerror(errno)); } @@ -601,12 +614,8 @@ ast_mutex_lock(&pkt->owner->lock); if (pkt->retrans < MAX_RETRANS) { pkt->retrans++; - if (sip_debug_test_pvt(pkt->owner)) { - if (pkt->owner->nat) - ast_verbose("Retransmitting #%d (NAT):\n%s\n to %s:%d\n", pkt->retrans, pkt->data, inet_ntoa(pkt->owner->recv.sin_addr), ntohs(pkt->owner->recv.sin_port)); - else - ast_verbose("Retransmitting #%d (no NAT):\n%s\n to %s:%d\n", pkt->retrans, pkt->data, inet_ntoa(pkt->owner->sa.sin_addr), ntohs(pkt->owner->sa.sin_port)); - } + if (sip_debug_test_pvt(pkt->owner)) + ast_verbose("Retransmitting #%d (%s)\n", pkt->retrans, pkt->owner->nat ? "NAT" : "no Nat"); append_history(pkt->owner, "ReTx", pkt->data); __sip_xmit(pkt->owner, pkt->data, pkt->packetlen); res = 1; @@ -780,12 +789,8 @@ static int send_response(struct sip_pvt *p, struct sip_request *req, int reliable, int seqno) { int res; - if (sip_debug_test_pvt(p)) { - if (p->nat) - ast_verbose("%sTransmitting (NAT):\n%s\n to %s:%d\n", reliable ? "Reliably " : "", req->data, inet_ntoa(p->recv.sin_addr), ntohs(p->recv.sin_port)); - else - ast_verbose("%sTransmitting (no NAT):\n%s\n to %s:%d\n", reliable ? "Reliably " : "", req->data, inet_ntoa(p->sa.sin_addr), ntohs(p->sa.sin_port)); - } + if (sip_debug_test_pvt(p)) + ast_verbose("%s Transmitting (%s)\n", reliable ? "Reliably" : "", p->nat ? "NAT" : "no Nat"); if (reliable) { append_history(p, "TxRespRel", req->data); res = __sip_reliable_xmit(p, seqno, 1, req->data, req->len, (reliable > 1)); @@ -802,12 +807,8 @@ static int send_request(struct sip_pvt *p, struct sip_request *req, int reliable, int seqno) { int res; - if (sip_debug_test_pvt(p)) { - if (p->nat) - ast_verbose("%sTransmitting:\n%s (NAT) to %s:%d\n", reliable ? "Reliably " : "", req->data, inet_ntoa(p->recv.sin_addr), ntohs(p->recv.sin_port)); - else - ast_verbose("%sTransmitting:\n%s (no NAT) to %s:%d\n", reliable ? "Reliably " : "", req->data, inet_ntoa(p->sa.sin_addr), ntohs(p->sa.sin_port)); - } + if (sip_debug_test_pvt(p)) + ast_verbose("%s Transmitting (%s)\n", reliable ? "Reliably" : "", p->nat ? "NAT" : "no Nat"); if (reliable) { append_history(p, "TxReqRel", req->data); res = __sip_reliable_xmit(p, seqno, 0, req->data, req->len, (reliable > 1)); @@ -3275,7 +3276,7 @@ copy_request(&p->initreq, &req); parse(&p->initreq); if (sip_debug_test_pvt(p)) - ast_verbose("%d headers, %d lines\n", p->initreq.headers, p->initreq.lines); + ast_verbose("Tx - %d headers, %d lines\n", p->initreq.headers, p->initreq.lines); determine_firstline_parts(&p->initreq); p->lastinvite = p->ocseq; p->outgoing = 1; @@ -3428,7 +3429,7 @@ copy_request(&p->initreq, &req); parse(&p->initreq); if (sip_debug_test_pvt(p)) - ast_verbose("%d headers, %d lines\n", p->initreq.headers, p->initreq.lines); + ast_verbose("Tx - %d headers, %d lines\n", p->initreq.headers, p->initreq.lines); determine_firstline_parts(&p->initreq); } p->lastinvite = p->ocseq; @@ -3552,7 +3553,7 @@ copy_request(&p->initreq, &req); parse(&p->initreq); if (sip_debug_test_pvt(p)) - ast_verbose("%d headers, %d lines\n", p->initreq.headers, p->initreq.lines); + ast_verbose("Tx - %d headers, %d lines\n", p->initreq.headers, p->initreq.lines); determine_firstline_parts(&p->initreq); } @@ -3716,7 +3717,7 @@ copy_request(&p->initreq, &req); parse(&p->initreq); if (sip_debug_test_pvt(p)) - ast_verbose("%d headers, %d lines\n", p->initreq.headers, p->initreq.lines); + ast_verbose("Tx - %d headers, %d lines\n", p->initreq.headers, p->initreq.lines); determine_firstline_parts(&p->initreq); r->regstate=auth?REG_STATE_AUTHSENT:REG_STATE_REGSENT; return send_request(p, &req, 2, p->ocseq); @@ -6689,12 +6690,12 @@ req.data[res] = '\0'; req.len = res; if (debug) - ast_verbose("\n\nSip read: \n%s\n", req.data); + ast_verbose(FORMAT_rx, dbg_pkt_stamp(), inet_ntoa(sin.sin_addr), ntohs(sin.sin_port), req.data); if (pedanticsipchecking) req.len = lws2sws(req.data, req.len); parse(&req); if (debug) - ast_verbose("%d headers, %d lines\n", req.headers, req.lines); + ast_verbose("Rx - %d headers, %d lines\n", req.headers, req.lines); if (req.headers < 2) { /* Must have at least two headers */ return 1;