Index: channels/chan_sip.c =================================================================== RCS file: /usr/cvsroot/asterisk/channels/chan_sip.c,v retrieving revision 1.362 diff -u -r1.362 chan_sip.c --- channels/chan_sip.c 3 May 2004 05:14:52 -0000 1.362 +++ channels/chan_sip.c 3 May 2004 19:36:29 -0000 @@ -39,6 +39,7 @@ #include #include #include +#include #include #include #include @@ -716,7 +717,7 @@ ast_verbose("Sending text %s on %s\n", text, ast->name); if (!p) return -1; - if (!text || !strlen(text)) + if (!text || ast_strlen_zero(text)) return 0; if (sip_debug_test_pvt(p)) ast_verbose("Really sending text %s on %s\n", text, ast->name); @@ -934,15 +935,15 @@ strncpy(r->peermd5secret, p->md5secret, sizeof(r->peermd5secret)-1); strncpy(r->username, p->username, sizeof(r->username)-1); strncpy(r->tohost, p->tohost, sizeof(r->tohost)-1); - if (!strlen(r->tohost)) { + if (ast_strlen_zero(r->tohost)) { if (p->addr.sin_addr.s_addr) snprintf(r->tohost, sizeof(r->tohost), inet_ntoa(p->addr.sin_addr)); else snprintf(r->tohost, sizeof(r->tohost), inet_ntoa(p->defaddr.sin_addr)); } - if (strlen(p->fromdomain)) + if (!ast_strlen_zero(p->fromdomain)) strncpy(r->fromdomain, p->fromdomain, sizeof(r->fromdomain)-1); - if (strlen(p->fromuser)) + if (!ast_strlen_zero(p->fromuser)) strncpy(r->fromuser, p->fromuser, sizeof(r->fromuser)-1); r->insecure = p->insecure; r->canreinvite = p->canreinvite; @@ -1361,7 +1362,7 @@ needdestroy = 1; /* Start the process if it's not already started */ - if (!p->alreadygone && strlen(p->initreq.data)) { + if (!p->alreadygone && !ast_strlen_zero(p->initreq.data)) { if (needcancel) { if (p->outgoing) { transmit_request_with_auth(p, "CANCEL", p->ocseq, 1, 0); @@ -1623,11 +1624,11 @@ tmp->callgroup = i->callgroup; tmp->pickupgroup = i->pickupgroup; tmp->restrictcid = i->restrictcid; - if (strlen(i->accountcode)) + if (!ast_strlen_zero(i->accountcode)) strncpy(tmp->accountcode, i->accountcode, sizeof(tmp->accountcode)-1); if (i->amaflags) tmp->amaflags = i->amaflags; - if (strlen(i->language)) + if (!ast_strlen_zero(i->language)) strncpy(tmp->language, i->language, sizeof(tmp->language)-1); i->owner = tmp; ast_mutex_lock(&usecnt_lock); @@ -1635,14 +1636,14 @@ ast_mutex_unlock(&usecnt_lock); strncpy(tmp->context, i->context, sizeof(tmp->context)-1); strncpy(tmp->exten, i->exten, sizeof(tmp->exten)-1); - if (strlen(i->callerid)) + if (!ast_strlen_zero(i->callerid)) tmp->callerid = strdup(i->callerid); - if (strlen(i->rdnis)) + if (!ast_strlen_zero(i->rdnis)) tmp->rdnis = strdup(i->rdnis); - if (strlen(i->exten) && strcmp(i->exten, "s")) + if (!ast_strlen_zero(i->exten) && strcmp(i->exten, "s")) tmp->dnid = strdup(i->exten); tmp->priority = 1; - if (strlen(i->domain)) { + if (!ast_strlen_zero(i->domain)) { pbx_builtin_setvar_helper(tmp, "SIPDOMAIN", i->domain); } ast_setstate(tmp, state); @@ -1920,7 +1921,7 @@ } - if (!strlen(callid)) { + if (ast_strlen_zero(callid)) { ast_log(LOG_WARNING, "Call missing call ID from '%s'\n", inet_ntoa(sin->sin_addr)); return NULL; } @@ -1928,7 +1929,7 @@ p = iflist; while(p) { if (!strcmp(p->callid, callid) && - (!pedanticsipchecking || !tag || !strlen(p->theirtag) || !strcmp(p->theirtag, tag))) { + (!pedanticsipchecking || !tag || ast_strlen_zero(p->theirtag) || !strcmp(p->theirtag, tag))) { /* Found the call */ ast_mutex_lock(&p->lock); ast_mutex_unlock(&iflock); @@ -1964,7 +1965,7 @@ *hostname = '\0'; hostname++; } - if (!username || !strlen(username) || !hostname || !strlen(hostname)) { + if (!username || ast_strlen_zero(username) || !hostname || !strlen(hostname)) { ast_log(LOG_WARNING, "Format for registration is user[:secret[:authuser]]@host[:port][/contact] at line %d", lineno); return -1; } @@ -1979,7 +1980,7 @@ hostname = strsep(&stringp, "/"); if (hostname) contact = strsep(&stringp, "/"); - if (!contact || !strlen(contact)) + if (!contact || ast_strlen_zero(contact)) contact = "s"; stringp=hostname; hostname = strsep(&stringp, ":"); @@ -2087,7 +2088,7 @@ #if 0 printf("Header: %s (%d)\n", req->header[f], strlen(req->header[f])); #endif - if (!strlen(req->header[f])) { + if (ast_strlen_zero(req->header[f])) { /* Line by itself means we're now in content */ c++; break; @@ -2104,7 +2105,7 @@ c++; } /* Check for last header */ - if (strlen(req->header[f])) + if (!ast_strlen_zero(req->header[f])) f++; req->headers = f; /* Now we process any mime content */ @@ -2129,7 +2130,7 @@ c++; } /* Check for last line */ - if (strlen(req->line[f])) + if (!ast_strlen_zero(req->line[f])) f++; req->lines = f; if (*c) @@ -2163,7 +2164,7 @@ } m = get_sdp(req, "m"); c = get_sdp(req, "c"); - if (!strlen(m) || !strlen(c)) { + if (ast_strlen_zero(m) || ast_strlen_zero(c)) { ast_log(LOG_WARNING, "Insufficient information for SDP (m = '%s', c = '%s')\n", m, c); return -1; } @@ -2184,7 +2185,7 @@ /* Scan through the RTP payload types specified in a "m=" line: */ ast_rtp_pt_clear(p->rtp); codecs = m + len; - while(strlen(codecs)) { + while(!ast_strlen_zero(codecs)) { if (sscanf(codecs, "%d%n", &codec, &len) != 1) { ast_log(LOG_WARNING, "Error in codec string '%s'\n", codecs); return -1; @@ -2204,7 +2205,7 @@ vportno = x; /* Scan through the RTP payload types specified in a "m=" line: */ codecs = m + len; - while(strlen(codecs)) { + while(!ast_strlen_zero(codecs)) { if (sscanf(codecs, "%d%n", &codec, &len) != 1) { ast_log(LOG_WARNING, "Error in codec string '%s'\n", codecs); return -1; @@ -2364,7 +2365,7 @@ { char *tmp; tmp = get_header(orig, field); - if (strlen(tmp)) { + if (!ast_strlen_zero(tmp)) { /* Add what we're responding to */ return add_header(req, field, tmp); } @@ -2379,7 +2380,7 @@ int copied = 0; for (;;) { tmp = __get_header(orig, field, &start); - if (strlen(tmp)) { + if (!ast_strlen_zero(tmp)) { /* Add what we're responding to */ add_header(req, field, tmp); copied++; @@ -2397,7 +2398,7 @@ char new[256]; for (;;) { tmp = __get_header(orig, field, &start); - if (strlen(tmp)) { + if (!ast_strlen_zero(tmp)) { if (!copied && p->nat) { #ifdef THE_SIP_AUTHORS_CAN_SUCK_MY_GONADS /* SLD: FIXME: Nice try, but the received= should not have a port */ @@ -2556,7 +2557,7 @@ if (!strstr(ot, "tag=")) { /* Add the proper tag if we don't have it already. If they have specified their tag, use it. Otherwise, use our own tag */ - if (strlen(p->theirtag) && p->outgoing) + if (!ast_strlen_zero(p->theirtag) && p->outgoing) snprintf(newto, sizeof(newto), "%s;tag=%s", ot, p->theirtag); else if (p->tag && !p->outgoing) snprintf(newto, sizeof(newto), "%s;tag=as%08x", ot, p->tag); @@ -2607,7 +2608,7 @@ snprintf(p->via, sizeof(p->via), "SIP/2.0/UDP %s:%d;branch=z9hG4bK%08x", inet_ntoa(p->ourip), ourport, p->branch); } - if (strlen(p->uri)) { + if (!ast_strlen_zero(p->uri)) { c = p->uri; } else { if (p->outgoing) @@ -2645,7 +2646,7 @@ if (!strstr(ot, "tag=") && strcasecmp(msg, "CANCEL")) { /* Add the proper tag if we don't have it already. If they have specified their tag, use it. Otherwise, use our own tag */ - if (p->outgoing && strlen(p->theirtag)) + if (p->outgoing && !ast_strlen_zero(p->theirtag)) snprintf(newto, sizeof(newto), "%s;tag=%s", ot, p->theirtag); else if (!p->outgoing) snprintf(newto, sizeof(newto), "%s;tag=as%08x", ot, p->tag); @@ -3066,7 +3067,7 @@ n = strchr(c, ';'); if (n) *n = '\0'; - if (c && strlen(c)) + if (c && !ast_strlen_zero(c)) strncpy(p->uri, c, sizeof(p->uri) - 1); } @@ -3103,18 +3104,18 @@ l = CALLERID_UNKNOWN; n = l; } - if (!n || !strlen(n)) + if (!n || ast_strlen_zero(n)) n = l; /* Allow user to be overridden */ - if (strlen(p->fromuser)) + if (!ast_strlen_zero(p->fromuser)) l = p->fromuser; - if ((ourport != 5060) && !strlen(p->fromdomain)) + if ((ourport != 5060) && ast_strlen_zero(p->fromdomain)) snprintf(from, sizeof(from), "\"%s\" ;tag=as%08x", n, l, strlen(p->fromdomain) ? p->fromdomain : inet_ntoa(p->ourip), ourport, p->tag); else snprintf(from, sizeof(from), "\"%s\" ;tag=as%08x", n, l, strlen(p->fromdomain) ? p->fromdomain : inet_ntoa(p->ourip), p->tag); - if (strlen(p->username)) { + if (!ast_strlen_zero(p->username)) { if (ntohs(p->sa.sin_port) != DEFAULT_SIP_PORT) { snprintf(invite, sizeof(invite), "sip:%s@%s:%d",p->username, p->tohost, ntohs(p->sa.sin_port)); } else { @@ -3168,9 +3169,9 @@ add_header(&req, authheader, auth); append_date(&req); if (!strcasecmp(cmd, "REFER")) { - if (strlen(p->refer_to)) + if (!ast_strlen_zero(p->refer_to)) add_header(&req, "Refer-To", p->refer_to); - if (strlen(p->referred_by)) + if (!ast_strlen_zero(p->referred_by)) add_header(&req, "Referred-By", p->referred_by); } @@ -3398,7 +3399,7 @@ p->registry=r; strncpy(p->peersecret, r->secret, sizeof(p->peersecret)-1); strncpy(p->peermd5secret, r->md5secret, sizeof(p->peermd5secret)-1); - if (strlen(r->authuser)) { + if (!ast_strlen_zero(r->authuser)) { strncpy(p->peername, r->authuser, sizeof(p->peername)-1); strncpy(p->authname, r->authuser, sizeof(p->authname)-1); } else { @@ -3517,7 +3518,7 @@ reqprep(&req, p, "REFER", 0, 1); add_header(&req, "Refer-To", referto); - if (strlen(p->our_contact)) + if (!ast_strlen_zero(p->our_contact)) add_header(&req, "Referred-By", p->our_contact); add_blank_header(&req); return send_request(p, &req, 1, p->ocseq); @@ -3624,7 +3625,7 @@ struct hostent *hp; struct ast_hostent ahp; struct sockaddr_in oldsin; - if (!strlen(expires)) { + if (ast_strlen_zero(expires)) { expires = strstr(get_header(req, "Contact"), "expires="); if (expires) { if (sscanf(expires + 8, "%d;", &expiry) != 1) @@ -3794,7 +3795,7 @@ /* 2nd append the Contact: if there is one */ /* Can be multiple Contact headers, comma separated values - we just take the first */ contact = get_header(req, "Contact"); - if (strlen(contact)) { + if (!ast_strlen_zero(contact)) { ast_log(LOG_DEBUG, "build_route: Contact hop: %s\n", contact); /* Look for <: delimited address */ c = strchr(contact, '<'); @@ -3844,12 +3845,12 @@ { int res = -1; /* Always OK if no secret */ - if (!strlen(secret) && !strlen(md5secret)) + if (ast_strlen_zero(secret) && ast_strlen_zero(md5secret)) return 0; - if (ignore && strlen(randdata) && !strlen(get_header(req, "Proxy-Authorization"))) { + if (ignore && !ast_strlen_zero(randdata) && ast_strlen_zero(get_header(req, "Proxy-Authorization"))) { /* This is a retransmitted invite/register/etc, don't reconstruct authentication information */ - if (strlen(randdata)) { + if (!ast_strlen_zero(randdata)) { if (!reliable) { /* Resend message if this was NOT a reliable delivery. Otherwise the retransmission should get it */ @@ -3859,7 +3860,7 @@ } res = 1; } - } else if (!strlen(randdata) || !strlen(get_header(req, "Proxy-Authorization"))) { + } else if (ast_strlen_zero(randdata) || ast_strlen_zero(get_header(req, "Proxy-Authorization"))) { snprintf(randdata, randlen, "%08x", rand()); transmit_response_with_auth(p, "407 Proxy Authentication Required", req, randdata, reliable); /* Schedule auto destroy in 15 seconds */ @@ -3919,11 +3920,11 @@ c++; } snprintf(a1, sizeof(a1), "%s:%s:%s", username, "asterisk", secret); - if(strlen(resp_uri)) + if(!ast_strlen_zero(resp_uri)) snprintf(a2, sizeof(a2), "%s:%s", method, resp_uri); else snprintf(a2, sizeof(a2), "%s:%s", method, uri); - if (strlen(md5secret)) + if (!ast_strlen_zero(md5secret)) snprintf(a1_hash, sizeof(a1_hash), "%s", md5secret); else md5_hash(a1_hash, a1); @@ -4063,7 +4064,7 @@ if (!req) req = &p->initreq; strncpy(tmp, get_header(req, "Diversion"), sizeof(tmp) - 1); - if (!strlen(tmp)) + if (ast_strlen_zero(tmp)) return 0; c = ditch_braces(tmp); if (strncmp(c, "sip:", 4)) { @@ -4101,7 +4102,7 @@ return -1; } c += 4; - if (strlen(fr)) { + if (!ast_strlen_zero(fr)) { if (strncmp(fr, "sip:", 4)) { ast_log(LOG_WARNING, "Huh? Not a SIP header (%s)?\n", fr); return -1; @@ -4228,7 +4229,7 @@ ast_verbose("Looking for %s in %s\n", c, p->context); ast_verbose("Looking for %s in %s\n", c2, p->context); } - if (strlen(tmp5)) { + if (!ast_strlen_zero(tmp5)) { /* This is a supervised transfer */ ast_log(LOG_DEBUG,"Assigning Replace-Call-ID Info %s to REPLACE_CALL_ID\n",tmp5); @@ -4405,7 +4406,7 @@ memset(calleridname,0,sizeof(calleridname)); get_calleridname(from,calleridname); of = ditch_braces(from); - if (!strlen(p->exten)) { + if (ast_strlen_zero(p->exten)) { t = uri; if (!strncmp(t, "sip:", 4)) t+= 4; @@ -4413,7 +4414,7 @@ t = strchr(p->exten, '@'); if (t) *t = '\0'; - if (!strlen(p->our_contact)) + if (ast_strlen_zero(p->our_contact)) build_contact(p); } if (strncmp(of, "sip:", 4)) { @@ -4429,7 +4430,7 @@ sprintf(p->callerid,"\"%s\" <%s>",calleridname,of); else strncpy(p->callerid, of, sizeof(p->callerid) - 1); - if (!strlen(of)) + if (ast_strlen_zero(of)) return 0; ast_mutex_lock(&userl.lock); user = find_user(of); @@ -4445,9 +4446,9 @@ } if (!(res = check_auth(p, req, p->randdata, sizeof(p->randdata), user->name, user->secret, user->md5secret, cmd, uri, reliable, ignore))) { sip_cancel_destroy(p); - if (strlen(user->context)) + if (!ast_strlen_zero(user->context)) strncpy(p->context, user->context, sizeof(p->context) - 1); - if (strlen(user->callerid) && strlen(p->callerid)) + if (!ast_strlen_zero(user->callerid) && !ast_strlen_zero(p->callerid)) strncpy(p->callerid, user->callerid, sizeof(p->callerid) - 1); strncpy(p->username, user->name, sizeof(p->username) - 1); strncpy(p->peersecret, user->secret, sizeof(p->peersecret) - 1); @@ -4494,11 +4495,11 @@ p->canreinvite = peer->canreinvite; strncpy(p->peername, peer->name, sizeof(p->peername) - 1); strncpy(p->authname, peer->name, sizeof(p->authname) - 1); - if (strlen(peer->username)) { + if (!ast_strlen_zero(peer->username)) { strncpy(p->username, peer->username, sizeof(p->username) - 1); strncpy(p->authname, peer->username, sizeof(p->authname) - 1); } - if (strlen(peer->context)) + if (!ast_strlen_zero(peer->context)) strncpy(p->context, peer->context, sizeof(p->context) - 1); strncpy(p->peersecret, peer->secret, sizeof(p->peersecret) - 1); strncpy(p->peermd5secret, peer->md5secret, sizeof(p->peermd5secret) - 1); @@ -4635,7 +4636,7 @@ int print_line = -1; char srch[2000]; strncpy(nm, inet_ntoa(peer->mask), sizeof(nm)-1); - if (strlen(peer->username)) + if (!ast_strlen_zero(peer->username)) snprintf(name, sizeof(name), "%s/%s", peer->name, peer->username); else strncpy(name, peer->name, sizeof(name) - 1); @@ -4824,7 +4825,7 @@ struct ast_frame f; char *c; /* Try getting the "signal=" part */ - if (strlen(c = get_sdp(req, "Signal")) || strlen(c = get_sdp(req, "d"))) { + if (!ast_strlen_zero(c = get_sdp(req, "Signal")) || !ast_strlen_zero(c = get_sdp(req, "d"))) { strncpy(buf, c, sizeof(buf) - 1); } else if (get_msg_text(buf, sizeof(buf), req)) { /* Normal INFO method */ @@ -4833,7 +4834,7 @@ } if (p->owner) { - if (strlen(buf)) { + if (!ast_strlen_zero(buf)) { if (sip_debug_test_pvt(p)) ast_verbose("DTMF received: '%c'\n", buf[0]); if (buf[0] == '*') @@ -4985,7 +4986,7 @@ strncpy(tmp, get_header(req, header),sizeof(tmp) - 1); - if (!strlen(tmp)) + if (ast_strlen_zero(tmp)) return -1; c = tmp; c+=strlen("Digest "); @@ -5077,9 +5078,9 @@ char uri[256] = ""; char cnonce[80]; - if (strlen(p->domain)) + if (!ast_strlen_zero(p->domain)) strncpy(uri, p->domain, sizeof(uri) - 1); - else if (strlen(p->uri)) + else if (!ast_strlen_zero(p->uri)) strncpy(uri, p->uri, sizeof(uri) - 1); else snprintf(uri, sizeof(uri), "sip:%s@%s",p->username, inet_ntoa(p->sa.sin_addr)); @@ -5088,20 +5089,20 @@ snprintf(a1,sizeof(a1),"%s:%s:%s",p->authname,p->realm,p->peersecret); snprintf(a2,sizeof(a2),"%s:%s",orig_header,uri); - if (strlen(p->peermd5secret)) + if (!ast_strlen_zero(p->peermd5secret)) strncpy(a1_hash, p->peermd5secret, sizeof(a1_hash) - 1); else md5_hash(a1_hash,a1); md5_hash(a2_hash,a2); /* XXX We hard code the nonce-number to 1... What are the odds? Are we seriously going to keep track of every nonce we've seen? Also we hard code to "auth"... XXX */ - if (strlen(p->qop)) + if (!ast_strlen_zero(p->qop)) snprintf(resp,sizeof(resp),"%s:%s:%s:%s:%s:%s",a1_hash,p->nonce, "00000001", cnonce, "auth", a2_hash); else snprintf(resp,sizeof(resp),"%s:%s:%s",a1_hash,p->nonce,a2_hash); md5_hash(resp_hash,resp); /* XXX We hard code our qop to "auth" for now. XXX */ - if (strlen(p->qop)) + if (!ast_strlen_zero(p->qop)) snprintf(digest,digest_len,"Digest username=\"%s\", realm=\"%s\", algorithm=\"MD5\", uri=\"%s\", nonce=\"%s\", response=\"%s\", opaque=\"%s\", qop=\"%s\", cnonce=\"%s\", nc=%s",p->authname,p->realm,uri,p->nonce,resp_hash, p->opaque, "auth", cnonce, "00000001"); else snprintf(digest,digest_len,"Digest username=\"%s\", realm=\"%s\", algorithm=\"MD5\", uri=\"%s\", nonce=\"%s\", response=\"%s\", opaque=\"%s\"",p->authname,p->realm,uri,p->nonce,resp_hash, p->opaque); @@ -5290,7 +5291,7 @@ break; case 183: if (!strcasecmp(msg, "INVITE")) { - if (strlen(get_header(req, "Content-Type"))) + if (!ast_strlen_zero(get_header(req, "Content-Type"))) process_sdp(p, req); if (p->owner) { /* Queue a progress frame */ @@ -5317,7 +5318,7 @@ } } } else if (!strcasecmp(msg, "INVITE")) { - if (strlen(get_header(req, "Content-Type"))) + if (!ast_strlen_zero(get_header(req, "Content-Type"))) process_sdp(p, req); /* Save Record-Route for any later requests we make on this dialogue */ build_route(p, req, 1); @@ -5361,14 +5362,14 @@ /* according to section 6.13 of RFC, contact headers override expires headers, so check those first */ expires = 0; - if (strlen(get_header(req, "Contact")) != 0) { + if (!ast_strlen_zero(get_header(req, "Contact"))) { char *contact = NULL; char *tmptmp = NULL; int start = 0; for(;;) { contact = __get_header(req, "Contact", &start); /* this loop ensures we get a contact header about our register request */ - if(strlen(contact)) { + if(!ast_strlen_zero(contact)) { if(strstr(contact, p->our_contact)) break; } else @@ -5425,7 +5426,7 @@ } } } else if (!strcasecmp(msg, "BYE") || !strcasecmp(msg, "REFER")) { - if (!strlen(p->authname)) + if (ast_strlen_zero(p->authname)) ast_log(LOG_WARNING, "Asked to authenticate %s, to %s:%d but we have no matching peer!\n", msg, inet_ntoa(p->recv.sin_addr), ntohs(p->recv.sin_port)); if ((p->authtries > 1) || do_proxy_auth(p, req, "Proxy-Authenticate", "Proxy-Authorization", msg, 0)) { @@ -5518,7 +5519,7 @@ break; case 407: if (!strcasecmp(msg, "BYE") || !strcasecmp(msg, "REFER")) { - if (!strlen(p->authname)) + if (ast_strlen_zero(p->authname)) ast_log(LOG_WARNING, "Asked to authenticate %s, to %s:%d but we have no matching peer!\n", msg, inet_ntoa(p->recv.sin_addr), ntohs(p->recv.sin_port)); if ((p->authtries > 1) || do_proxy_auth(p, req, "Proxy-Authenticate", "Proxy-Authorization", msg, 0)) { @@ -5590,7 +5591,7 @@ cseq = get_header(req, "Cseq"); cmd = req->header[0]; /* Must have Cseq */ - if (!strlen(cmd) || !strlen(cseq)) + if (ast_strlen_zero(cmd) || ast_strlen_zero(cseq)) return -1; if (sscanf(cseq, "%i%n", &seqno, &len) != 1) { ast_log(LOG_DEBUG, "No seqno in '%s'\n", cmd); @@ -5616,7 +5617,7 @@ respond appropriately */ ignore=1; } - if (!strlen(p->theirtag)) { + if (ast_strlen_zero(p->theirtag)) { from = get_header(req, "From"); from = strstr(from, "tag="); if (from) { @@ -5653,7 +5654,7 @@ res = get_destination(p, req); build_contact(p); /* XXX Should we authenticate OPTIONS? XXX */ - if (!strlen(p->context)) + if (ast_strlen_zero(p->context)) strncpy(p->context, context, sizeof(p->context) - 1); if (res < 0) transmit_response_with_allow(p, "404 Not Found", req); @@ -5683,7 +5684,7 @@ p->outgoing = 0; copy_request(&p->initreq, req); check_via(p, req); - if (strlen(get_header(req, "Content-Type"))) { + if (!ast_strlen_zero(get_header(req, "Content-Type"))) { if (process_sdp(p, req)) return -1; } else { @@ -5706,7 +5707,7 @@ return 0; } /* Initialize the context if it hasn't been already */ - if (!strlen(p->context)) + if (ast_strlen_zero(p->context)) strncpy(p->context, context, sizeof(p->context) - 1); /* Check number of concurrent calls -vs- incoming limit HERE */ ast_log(LOG_DEBUG, "Check for res for %s\n", p->username); @@ -5735,12 +5736,12 @@ p->needdestroy = 1; } else { /* If no extension was specified, use the s one */ - if (!strlen(p->exten)) + if (ast_strlen_zero(p->exten)) strncpy(p->exten, "s", sizeof(p->exten) - 1); /* Initialize tag */ p->tag = rand(); /* First invitation */ - c = sip_new(p, AST_STATE_DOWN, strlen(p->username) ? p->username : NULL); + c = sip_new(p, AST_STATE_DOWN, ast_strlen_zero(p->username) ? NULL : p->username ); *recount = 1; /* Save Record-Route for any later requests we make on this dialogue */ build_route(p, req, 0); @@ -5812,7 +5813,7 @@ } } else if (!strcasecmp(cmd, "REFER")) { ast_log(LOG_DEBUG, "We found a REFER!\n"); - if (!strlen(p->context)) + if (ast_strlen_zero(p->context)) strncpy(p->context, context, sizeof(p->context) - 1); res = get_refer_info(p, req); if (res < 0) @@ -5880,10 +5881,10 @@ /* Immediately stop VRTP */ ast_rtp_stop(p->vrtp); } - if (strlen(get_header(req, "Also"))) { + if (!ast_strlen_zero(get_header(req, "Also"))) { ast_log(LOG_NOTICE, "Client '%s' using deprecated BYE/Also transfer method. Ask vendor to support REFER instead\n", inet_ntoa(p->recv.sin_addr)); - if (!strlen(p->context)) + if (ast_strlen_zero(p->context)) strncpy(p->context, context, sizeof(p->context) - 1); res = get_also_info(p, req); if (!res) { @@ -5936,7 +5937,7 @@ return 0; } /* Initialize the context if it hasn't been already */ - if (!strlen(p->context)) + if (ast_strlen_zero(p->context)) strncpy(p->context, context, sizeof(p->context) - 1); /* Get destination right away */ gotdest = get_destination(p, NULL); @@ -6003,11 +6004,11 @@ supposed to retransmit responses until we get an ack? Make sure this is on a valid call */ __sip_ack(p, seqno, FLAG_RESPONSE); - if (strlen(get_header(req, "Content-Type"))) { + if (!ast_strlen_zero(get_header(req, "Content-Type"))) { if (process_sdp(p, req)) return -1; } - if (!p->lastinvite && !strlen(p->randdata)) + if (!p->lastinvite && ast_strlen_zero(p->randdata)) p->needdestroy = 1; } else if (!strcasecmp(cmd, "SIP/2.0")) { extract_uri(p, req); @@ -6199,7 +6200,7 @@ fastrestart = 0; curpeernum = 0; while(peer) { - if ((curpeernum > lastpeernum) && strlen(peer->mailbox) && ((t - peer->lastmsgcheck) > 10)) { + if ((curpeernum > lastpeernum) && !ast_strlen_zero(peer->mailbox) && ((t - peer->lastmsgcheck) > 10)) { sip_send_mwi_to_peer(peer); fastrestart = 1; lastpeernum = curpeernum; @@ -6292,7 +6293,7 @@ } memcpy(&p->sa, &peer->addr, sizeof(p->sa)); memcpy(&p->recv, &peer->addr, sizeof(p->sa)); - if (strlen(p->tohost)) + if (!ast_strlen_zero(p->tohost)) strncpy(p->tohost, peer->tohost, sizeof(p->tohost) - 1); else snprintf(p->tohost, sizeof(p->tohost), "%s", inet_ntoa(peer->addr.sin_addr)); @@ -6410,7 +6411,7 @@ sip_destroy(p); return NULL; } - if (!strlen(p->peername) && ext) + if (ast_strlen_zero(p->peername) && ext) strncpy(p->peername, ext, sizeof(p->peername) - 1); /* Recalculate our side, and recalculate Call ID */ if (ast_sip_ouraddrfor(&p->sa.sin_addr,&p->ourip)) @@ -6531,10 +6532,10 @@ v = v->next; } } - if (!strlen(user->methods)) { - if (strlen(user->secret)) + if (ast_strlen_zero(user->methods)) { + if (!ast_strlen_zero(user->secret)) strncpy(user->methods, "md5,plaintext", sizeof(user->methods) - 1); - else if (strlen(user->md5secret)) + else if (!ast_strlen_zero(user->md5secret)) strncpy(user->methods, "md5", sizeof(user->methods) - 1); } if (oldha) @@ -6730,7 +6731,7 @@ */ v=v->next; } - if (!strlen(peer->methods)) + if (ast_strlen_zero(peer->methods)) strcpy(peer->methods, "md5,plaintext"); if (!found && peer->dynamic) reg_source_db(peer); @@ -6994,7 +6995,7 @@ ast_destroy(cfg); #ifdef MYSQL_FRIENDS /* Connect to db if appropriate */ - if (!mysql && strlen(mydbname)) { + if (!mysql && !ast_strlen_zero(mydbname)) { mysql = mysql_init(NULL); if (!mysql_real_connect(mysql, mydbhost[0] ? mydbhost : NULL, mydbuser, mydbpass, mydbname, 0, NULL, 0)) { memset(mydbpass, '*', strlen(mydbpass));