Small outgoing OSP cleanups
authorMark Spencer <markster@digium.com>
Fri, 25 Jun 2004 04:27:55 +0000 (04:27 +0000)
committerMark Spencer <markster@digium.com>
Fri, 25 Jun 2004 04:27:55 +0000 (04:27 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3299 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_osplookup.c
res/res_osp.c

index 7e6e010..55216d4 100755 (executable)
@@ -192,7 +192,10 @@ static int ospfinished_exec(struct ast_channel *chan, void *data)
        }
        if (chan->cdr) {
                start = chan->cdr->answer.tv_sec;
-               duration = time(NULL) - start;
+               if (start)
+                       duration = time(NULL) - start;
+               else
+                       duration = 0;
        } else
                ast_log(LOG_WARNING, "OSPFinish called on channel '%s' with no CDR!\n", chan->name);
        LOCAL_USER_ADD(u);
index deac15c..6270c4a 100755 (executable)
@@ -28,6 +28,7 @@
 #include <asterisk/utils.h>
 #include <asterisk/lock.h>
 #include <asterisk/causes.h>
+#include <asterisk/callerid.h>
 #include <osp.h>
 #include <openssl/err.h>
 #include <stdio.h>
@@ -434,6 +435,7 @@ int ast_osp_lookup(struct ast_channel *chan, char *provider, char *extension, ch
        char callednum[2048]="";
        char destination[2048]="";
        char token[2000];
+       char tmp[256]="", *l, *n;
        OSPTCALLID *callid;
        OSPE_DEST_PROT prot;
 
@@ -448,6 +450,16 @@ int ast_osp_lookup(struct ast_channel *chan, char *provider, char *extension, ch
 
        if (!callerid)
                callerid = "";
+       strncpy(tmp, callerid, sizeof(tmp) - 1);
+       ast_callerid_parse(tmp, &n, &l);
+       if (!l)
+               l = "";
+       else {
+               ast_shrink_phone_number(l);
+               if (!ast_isphonenumber(l))
+                       l = "";
+       }
+       callerid = l;
 
        if (chan) {
                strncpy(uniqueid, chan->uniqueid, sizeof(uniqueid) - 1);