]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Fix the ordering fo some checks (bug #4406)
authorMark Spencer <markster@digium.com>
Mon, 30 May 2005 13:23:10 +0000 (13:23 +0000)
committerMark Spencer <markster@digium.com>
Mon, 30 May 2005 13:23:10 +0000 (13:23 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@5784 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c

index da9d5cf04ddb69b20a4353b3179465b413614d3d..6c727adf6d601a8c72beaf1371a4147b24f25c31 100755 (executable)
@@ -3239,14 +3239,18 @@ static int add_header(struct sip_request *req, char *var, char *value)
 {
        int x = 0;
        char *shortname = "";
-       if (req->len >= sizeof(req->data) - 4) {
-               ast_log(LOG_WARNING, "Out of space, can't add anymore (%s:%s)\n", var, value);
+       if (req->headers == SIP_MAX_HEADERS) {
+               ast_log(LOG_WARNING, "Out of SIP header space\n");
                return -1;
        }
        if (req->lines) {
                ast_log(LOG_WARNING, "Can't add more headers when lines have been added\n");
                return -1;
        }
+       if (req->len >= sizeof(req->data) - 4) {
+               ast_log(LOG_WARNING, "Out of space, can't add anymore (%s:%s)\n", var, value);
+               return -1;
+       }
 
        req->header[req->headers] = req->data + req->len;
        if (compactheaders) {
@@ -3260,10 +3264,6 @@ static int add_header(struct sip_request *req, char *var, char *value)
                snprintf(req->header[req->headers], sizeof(req->data) - req->len - 4, "%s: %s\r\n", var, value);
        }
        req->len += strlen(req->header[req->headers]);
-       if (req->headers == SIP_MAX_HEADERS) {
-               ast_log(LOG_WARNING, "Out of SIP header space\n");
-               return -1;
-       }
        req->headers++;
        return 0;       
 }
@@ -3271,21 +3271,21 @@ static int add_header(struct sip_request *req, char *var, char *value)
 /*--- add_blank_header: Add blank header to SIP message */
 static int add_blank_header(struct sip_request *req)
 {
-       if (req->len >= sizeof(req->data) - 4) {
-               ast_log(LOG_WARNING, "Out of space, can't add anymore\n");
+       if (req->headers == SIP_MAX_HEADERS)  {
+               ast_log(LOG_WARNING, "Out of SIP header space\n");
                return -1;
        }
        if (req->lines) {
                ast_log(LOG_WARNING, "Can't add more headers when lines have been added\n");
                return -1;
        }
+       if (req->len >= sizeof(req->data) - 4) {
+               ast_log(LOG_WARNING, "Out of space, can't add anymore\n");
+               return -1;
+       }
        req->header[req->headers] = req->data + req->len;
        snprintf(req->header[req->headers], sizeof(req->data) - req->len, "\r\n");
        req->len += strlen(req->header[req->headers]);
-       if (req->headers == SIP_MAX_HEADERS)  {
-               ast_log(LOG_WARNING, "Out of SIP header space\n");
-               return -1;
-       }
        req->headers++;
        return 0;       
 }
@@ -3293,8 +3293,8 @@ static int add_blank_header(struct sip_request *req)
 /*--- add_line: Add content (not header) to SIP message */
 static int add_line(struct sip_request *req, const char *line)
 {
-       if (req->len >= sizeof(req->data) - 4) {
-               ast_log(LOG_WARNING, "Out of space, can't add anymore\n");
+       if (req->lines == SIP_MAX_LINES)  {
+               ast_log(LOG_WARNING, "Out of SIP line space\n");
                return -1;
        }
        if (!req->lines) {
@@ -3302,13 +3302,13 @@ static int add_line(struct sip_request *req, const char *line)
                snprintf(req->data + req->len, sizeof(req->data) - req->len, "\r\n");
                req->len += strlen(req->data + req->len);
        }
+       if (req->len >= sizeof(req->data) - 4) {
+               ast_log(LOG_WARNING, "Out of space, can't add anymore\n");
+               return -1;
+       }
        req->line[req->lines] = req->data + req->len;
        snprintf(req->line[req->lines], sizeof(req->data) - req->len, "%s", line);
        req->len += strlen(req->line[req->lines]);
-       if (req->lines == SIP_MAX_LINES)  {
-               ast_log(LOG_WARNING, "Out of SIP line space\n");
-               return -1;
-       }
        req->lines++;
        return 0;       
 }
@@ -3485,10 +3485,7 @@ static int init_resp(struct sip_request *req, char *resp, struct sip_request *or
        req->header[req->headers] = req->data + req->len;
        snprintf(req->header[req->headers], sizeof(req->data) - req->len, "SIP/2.0 %s\r\n", resp);
        req->len += strlen(req->header[req->headers]);
-       if (req->headers < SIP_MAX_HEADERS)
-               req->headers++;
-       else
-               ast_log(LOG_WARNING, "Out of header space\n");
+       req->headers++;
        return 0;
 }
 
@@ -3503,10 +3500,7 @@ static int init_req(struct sip_request *req, int sipmethod, char *recip)
        req->header[req->headers] = req->data + req->len;
        snprintf(req->header[req->headers], sizeof(req->data) - req->len, "%s %s SIP/2.0\r\n", sip_methods[sipmethod].text, recip);
        req->len += strlen(req->header[req->headers]);
-       if (req->headers < SIP_MAX_HEADERS)
-               req->headers++;
-       else
-               ast_log(LOG_WARNING, "Out of header space\n");
+       req->headers++;
        return 0;
 }