]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
remove duplicated code in add_header
authorLuigi Rizzo <rizzo@icir.org>
Thu, 11 May 2006 10:22:18 +0000 (10:22 +0000)
committerLuigi Rizzo <rizzo@icir.org>
Thu, 11 May 2006 10:22:18 +0000 (10:22 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@26846 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c

index 3994615d1ba94b8fa73be5fb57e30e7aa02b47a7..4e53bc8889141f8e8526741ed4a4b174f16e5690 100644 (file)
@@ -4111,6 +4111,8 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req)
 /*! \brief Add header to SIP message */
 static int add_header(struct sip_request *req, const char *var, const char *value)
 {
+       int maxlen = sizeof(req->data) - 4 - req->len; /* 4 bytes are for two \r\n ? */
+
        if (req->headers == SIP_MAX_HEADERS) {
                ast_log(LOG_WARNING, "Out of SIP header space\n");
                return -1;
@@ -4121,7 +4123,7 @@ static int add_header(struct sip_request *req, const char *var, const char *valu
                return -1;
        }
 
-       if (req->len >= sizeof(req->data) - 4) {
+       if (maxlen <= 0) {
                ast_log(LOG_WARNING, "Out of space, can't add anymore (%s:%s)\n", var, value);
                return -1;
        }
@@ -4131,7 +4133,7 @@ static int add_header(struct sip_request *req, const char *var, const char *valu
        if (compactheaders)
                var = find_alias(var, var);
 
-       snprintf(req->header[req->headers], sizeof(req->data) - req->len - 4, "%s: %s\r\n", var, value);
+       snprintf(req->header[req->headers], maxlen, "%s: %s\r\n", var, value);
        req->len += strlen(req->header[req->headers]);
        req->headers++;