]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Add warned to ast_srtp to prevent errors on each frame from libsrtp
authorGregory Nietsky <gregory@distrotech.co.za>
Thu, 22 Sep 2011 11:39:49 +0000 (11:39 +0000)
committerGregory Nietsky <gregory@distrotech.co.za>
Thu, 22 Sep 2011 11:39:49 +0000 (11:39 +0000)
The first 9 frames are not reported as some devices dont use srtp
from first frame these are suppresed.

the warning is then output only once every 100 frames.

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@337541 65c4cc65-6c06-0410-ace0-fbb531ad65f3

res/res_srtp.c

index 223b79bbb52ad91d0b0123e956fdb2ca75427707..fe1ee73ced4a506a62925672e950e76257be2655 100644 (file)
@@ -54,6 +54,7 @@ struct ast_srtp {
        srtp_t session;
        const struct ast_srtp_cb *cb;
        void *data;
+       int warned;
        unsigned char buf[8192 + AST_FRIENDLY_OFFSET];
 };
 
@@ -179,6 +180,8 @@ static struct ast_srtp *res_srtp_new(void)
                ast_free(srtp);
                return NULL;
        }
+       
+       srtp->warned = 1;
 
        return srtp;
 }
@@ -382,7 +385,12 @@ static int ast_srtp_unprotect(struct ast_srtp *srtp, void *buf, int *len, int rt
        }
 
        if (res != err_status_ok && res != err_status_replay_fail ) {
-               ast_log(LOG_WARNING, "SRTP unprotect: %s\n", srtp_errstr(res));
+               if ((srtp->warned >= 10) && !((srtp->warned - 10) % 100)) {
+                       ast_log(LOG_WARNING, "SRTP unprotect: %s %d\n", srtp_errstr(res), srtp->warned);
+                       srtp->warned = 11;
+               } else {
+                       srtp->warned++;
+               }
                errno = EAGAIN;
                return -1;
        }