[asterisk-commits] mmichelson: branch mmichelson/issue14220 r169192 - /team/mmichelson/issue1422...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Sat Jan 17 15:45:23 CST 2009
Author: mmichelson
Date: Sat Jan 17 15:45:23 2009
New Revision: 169192
URL: http://svn.digium.com/svn-view/asterisk?view=rev&rev=169192
Log:
Code compiles now. On to testing.
Modified:
team/mmichelson/issue14220/channels/chan_sip.c
Modified: team/mmichelson/issue14220/channels/chan_sip.c
URL: http://svn.digium.com/svn-view/asterisk/team/mmichelson/issue14220/channels/chan_sip.c?view=diff&rev=169192&r1=169191&r2=169192
==============================================================================
--- team/mmichelson/issue14220/channels/chan_sip.c (original)
+++ team/mmichelson/issue14220/channels/chan_sip.c Sat Jan 17 15:45:23 2009
@@ -3777,10 +3777,10 @@
ntohs(dst->sin_port), req->data->str);
}
if (p->do_history) {
- struct sip_request tmp = { .rlPart1 = NULL, };
+ struct sip_request tmp = { .rlPart1 = 0, };
parse_copy(&tmp, req);
append_history(p, reliable ? "TxRespRel" : "TxResp", "%s / %s - %s", tmp.data->str, get_header(&tmp, "CSeq"),
- (tmp.method == SIP_RESPONSE || tmp.method == SIP_UNKNOWN) ? tmp.rlPart2 : sip_methods[tmp.method].text);
+ (tmp.method == SIP_RESPONSE || tmp.method == SIP_UNKNOWN) ? tmp.data->str + tmp.rlPart2 : sip_methods[tmp.method].text);
ast_free(tmp.data);
}
res = (reliable) ?
@@ -3813,7 +3813,7 @@
ast_verbose("%sTransmitting (no NAT) to %s:%d:\n%s\n---\n", reliable ? "Reliably " : "", ast_inet_ntoa(p->sa.sin_addr), ntohs(p->sa.sin_port), req->data->str);
}
if (p->do_history) {
- struct sip_request tmp = { .rlPart1 = NULL, };
+ struct sip_request tmp = { .rlPart1 = 0, };
parse_copy(&tmp, req);
append_history(p, reliable ? "TxReqRel" : "TxReq", "%s / %s - %s", tmp.data->str, get_header(&tmp, "CSeq"), sip_methods[tmp.method].text);
ast_free(tmp.data);
@@ -7088,9 +7088,9 @@
if (*c == '\r') { /* remove \r */
*c = '\0';
} else if (*c == '\n') { /* end of this line */
- ptrdiff_t current_header_offset = (c + 1) - req->data->str;
- char *previous_header = req->data->str + dst[i];
*c = '\0';
+ current_header_offset = (c + 1) - req->data->str;
+ previous_header = req->data->str + dst[i];
if (skipping_headers) {
/* check to see if this line is blank; if so, turn off
the skipping flag, so the next line will be processed
@@ -7136,8 +7136,8 @@
if we've already reached the maximum number of lines for portion of the message
we were parsing, we can't accept any more, so just ignore it.
*/
- if ((i < lim) && !ast_strlen_zero(dst[i])) {
- previous_header = req->data->str + dst[i];
+ previous_header = req->data->str + dst[i];
+ if ((i < lim) && !ast_strlen_zero(previous_header)) {
if (sipdebug) {
ast_debug(4, "%7s %2d [%3zu]: %s\n",
req->headers < 0 ? "Header" : "Body",
@@ -7238,25 +7238,26 @@
/* search for the boundary marker, the empty line delimiting headers from
sdp part and the end boundry if it exists */
- for (x = 0; x < (req->lines ); x++) {
- if(!strncasecmp(req->line[x], boundary, strlen(boundary))){
- if(found_application_sdp && found_end_of_headers){
+ for (x = 0; x < (req->lines); x++) {
+ char *line = req->data->str + req->line[x];
+ if (!strncasecmp(line, boundary, strlen(boundary))){
+ if (found_application_sdp && found_end_of_headers) {
req->sdp_end = x-1;
return 1;
}
found_application_sdp = FALSE;
}
- if(!strcasecmp(req->line[x], "Content-Type: application/sdp"))
+ if (!strcasecmp(line, "Content-Type: application/sdp"))
found_application_sdp = TRUE;
- if (ast_strlen_zero(req->line[x])) {
- if(found_application_sdp && !found_end_of_headers){
+ if (ast_strlen_zero(line)) {
+ if (found_application_sdp && !found_end_of_headers){
req->sdp_start = x;
found_end_of_headers = TRUE;
}
}
}
- if(found_application_sdp && found_end_of_headers) {
+ if (found_application_sdp && found_end_of_headers) {
req->sdp_end = x;
return TRUE;
}
@@ -8067,7 +8068,7 @@
}
ast_str_append(&req->data, 0, "%s: %s\r\n", var, value);
- req->header[req->headers] = req->data->str + req->len;
+ req->header[req->headers] = req->len;
req->len = req->data->used;
req->headers++;
@@ -8094,9 +8095,9 @@
if (!req->lines)
/* Add extra empty return */
req->len += ast_str_append(&req->data, 0, "\r\n");
- req->line[req->lines] = req->data->str + req->len;
+ req->line[req->lines] = req->len;
ast_str_append(&req->data, 0, "%s", line);
- req->len += strlen(req->line[req->lines]);
+ req->len = req->data->used;
req->lines++;
return 0;
}
@@ -8312,9 +8313,9 @@
resp->method = SIP_RESPONSE;
if (!(resp->data = ast_str_create(SIP_MIN_PACKET)))
return -1;
- resp->header[0] = resp->data->str;
+ resp->header[0] = 0;
ast_str_set(&resp->data, 0, "SIP/2.0 %s\r\n", msg);
- resp->len = strlen(resp->header[0]);
+ resp->len = resp->data->used;
resp->headers++;
return 0;
}
@@ -8436,14 +8437,14 @@
}
if (sipmethod == SIP_CANCEL)
- c = p->initreq.rlPart2; /* Use original URI */
+ c = p->initreq.data->str + p->initreq.rlPart2; /* Use original URI */
else if (sipmethod == SIP_ACK) {
/* Use URI from Contact: in 200 OK (if INVITE)
(we only have the contacturi on INVITEs) */
if (!ast_strlen_zero(p->okcontacturi))
c = is_strict ? p->route->hop : p->okcontacturi;
else
- c = p->initreq.rlPart2;
+ c = p->initreq.data->str + p->initreq.rlPart2;
} else if (!ast_strlen_zero(p->okcontacturi))
c = is_strict ? p->route->hop : p->okcontacturi; /* Use for BYE or REINVITE */
else if (!ast_strlen_zero(p->uri))
@@ -9372,8 +9373,6 @@
/*! \brief copy SIP request (mostly used to save request for responses) */
static void copy_request(struct sip_request *dst, const struct sip_request *src)
{
- long offset;
- int x;
struct ast_str *duplicate = dst->data;
/* First copy stuff */
@@ -12067,7 +12066,7 @@
/* Find the request URI */
if (req->rlPart2)
- ast_copy_string(tmp, req->rlPart2, sizeof(tmp));
+ ast_copy_string(tmp, req->data->str + req->rlPart2, sizeof(tmp));
if (sip_cfg.pedanticsipchecking)
ast_uri_decode(tmp);
@@ -13004,12 +13003,14 @@
int y;
buf[0] = '\0';
+ /*XXX isn't strlen(buf) going to always be 0? */
y = len - strlen(buf) - 5;
if (y < 0)
y = 0;
- for (x=0; x < req->lines; x++) {
- strncat(buf, req->line[x], y); /* safe */
- y -= strlen(req->line[x]) + 1;
+ for (x = 0; x < req->lines; x++) {
+ char *line = req->data->str + req->line[x];
+ strncat(buf, line, y); /* safe */
+ y -= strlen(line) + 1;
if (y < 0)
y = 0;
if (y != 0 && addnewline)
@@ -18464,10 +18465,12 @@
/* If pedantic is on, we need to check the tags. If they're different, this is
in fact a forked call through a SIP proxy somewhere. */
int different;
+ char *initial_rlPart2 = p->initreq.data->str + p->initreq.rlPart2;
+ char *this_rlPart2 = req->data->str + req->rlPart2;
if (sip_cfg.pedanticsipchecking)
- different = sip_uri_cmp(p->initreq.rlPart2, req->rlPart2);
+ different = sip_uri_cmp(initial_rlPart2, this_rlPart2);
else
- different = strcmp(p->initreq.rlPart2, req->rlPart2);
+ different = strcmp(initial_rlPart2, this_rlPart2);
if (!different) {
transmit_response(p, "482 Loop Detected", req);
p->invitestate = INV_COMPLETED;
@@ -18481,12 +18484,12 @@
* \todo XXX This needs to be reviewed. YOu don't change the request URI really, you route the packet
* correctly instead...
*/
- char *uri = ast_strdupa(req->rlPart2);
+ char *uri = ast_strdupa(this_rlPart2);
char *at = strchr(uri, '@');
char *peerorhost;
struct sip_pkt *pkt = NULL;
if (option_debug > 2) {
- ast_log(LOG_DEBUG, "Potential spiral detected. Original RURI was %s, new RURI is %s\n", p->initreq.rlPart2, req->rlPart2);
+ ast_log(LOG_DEBUG, "Potential spiral detected. Original RURI was %s, new RURI is %s\n", initial_rlPart2, this_rlPart2);
}
if (at) {
*at = '\0';
@@ -20625,7 +20628,7 @@
ast_str_reset(req->data); /* nulling this out is NOT a good idea here. */
return 1;
}
- req->method = find_sip_method(req->rlPart1);
+ req->method = find_sip_method(req->data->str + req->rlPart1);
if (req->debug)
ast_verbose("--- (%d headers %d lines)%s ---\n", req->headers, req->lines, (req->headers + req->lines == 0) ? " Nat keepalive" : "");
@@ -20665,7 +20668,7 @@
p->recv = *sin;
if (p->do_history) /* This is a request or response, note what it was for */
- append_history(p, "Rx", "%s / %s / %s", req->data->str, get_header(req, "CSeq"), req->rlPart2);
+ append_history(p, "Rx", "%s / %s / %s", req->data->str, get_header(req, "CSeq"), req->data->str + req->rlPart2);
if (!lockretry) {
if (!queue_request(p, req)) {
More information about the asterisk-commits
mailing list