aboutsummaryrefslogtreecommitdiffstats
path: root/main
diff options
context:
space:
mode:
authormmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b>2008-12-04 16:44:18 +0000
committermmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b>2008-12-04 16:44:18 +0000
commit82c2b7e353b3fb4dadd6812e135ecb48bcec133e (patch)
treeb3ac181c81100f5361b83af8a50fe6c90d8c45f7 /main
parent94c9ad47c86e4e1cfbc0738aa96aedabcf516a4a (diff)
Fix a callerid parsing issue. If someone formatted callerid like the
following: "name <number>" (including the quotation marks), then the parts would be parsed as name: "name number: number This is because the closing quotation mark was not discovered since the number and everything after was parsed out of the string earlier. Now, there is a check to see if the closing quote occurs after the number, so that we can know if we should strip off the opening quote on the name. Closes AST-158 git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@160943 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main')
-rw-r--r--main/callerid.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/main/callerid.c b/main/callerid.c
index 860deae0e..d446ecbb8 100644
--- a/main/callerid.c
+++ b/main/callerid.c
@@ -964,7 +964,6 @@ int ast_is_shrinkable_phonenumber(const char *exten)
* input location name
* " foo bar " <123> 123 ' foo bar ' (with spaces around)
* " foo bar " NULL 'foo bar' (without spaces around)
- * " foo bar <123>" 123 '" foo bar'
* The parsing of leading and trailing space/quotes should be more consistent.
*/
int ast_callerid_parse(char *instr, char **name, char **location)
@@ -978,6 +977,15 @@ int ast_callerid_parse(char *instr, char **name, char **location)
if ((ns = strchr(instr, '"')) && (ne = strchr(ns + 1, '"'))) {
*ns = *ne = '\0'; /* trim off the quotes */
*name = ns + 1; /* and this is the name */
+ } else if (ns) {
+ /* An opening quote was found but no closing quote was. The closing
+ * quote may actually be after the end of the bracketed number
+ */
+ if (strchr(le + 1, '\"')) {
+ *ns = '\0';
+ *name = ns + 1;
+ ast_trim_blanks(*name);
+ }
} else { /* no quotes, trim off leading and trailing spaces */
*name = ast_skip_blanks(instr);
ast_trim_blanks(*name);