Multiple revisions 390228-390229
authorAlexandr Anikin <may@telecom-service.ru>
Fri, 31 May 2013 10:42:19 +0000 (10:42 +0000)
committerAlexandr Anikin <may@telecom-service.ru>
Fri, 31 May 2013 10:42:19 +0000 (10:42 +0000)
........
  r390228 | may | 2013-05-31 14:19:52 +0400 (Fri, 31 May 2013) | 14 lines

  reject call attempts when gatekeeper is configured but not registered

  (closes issue ASTERISK-21800)
  Reported by: Dmitry Melekhov
  Patches:
          ASTERISK-21800-1.patch
  Tested by: Dmitry Melekhov
  ........

  Merged revisions 390181 from http://svn.asterisk.org/svn/asterisk/branches/1.8
  ........

  Merged revisions 390223 from http://svn.asterisk.org/svn/asterisk/branches/10
........
  r390229 | may | 2013-05-31 14:34:20 +0400 (Fri, 31 May 2013) | 4 lines

  remove unnecessary declarations
  (issue ASTERISK-21800)
........

Merged revisions 390228-390229 from http://svn.asterisk.org/svn/asterisk/branches/11

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

addons/chan_ooh323.c

index 61d9245..a4f62ac 100644 (file)
@@ -307,6 +307,8 @@ int onCallEstablished(ooCallData *call);
 int onCallCleared(ooCallData *call);
 void onModeChanged(ooCallData *call, int t38mode);
 
+extern OOH323EndPoint gH323ep;
+
 static char gLogFile[256] = DEFAULT_LOGFILE;
 static int  gPort = 1720;
 static char gIP[2+8*4+7];      /* Max for IPv6 addr */
@@ -642,6 +644,7 @@ static struct ast_channel *ooh323_request(const char *type, struct ast_format_ca
                ooh323_destroy(p);
                ast_mutex_unlock(&iflock);
                ast_log(LOG_ERROR, "Destination format is not supported\n");
+               *cause = AST_CAUSE_INVALID_NUMBER_FORMAT;
                return NULL;
        }
 
@@ -689,6 +692,10 @@ static struct ast_channel *ooh323_request(const char *type, struct ast_format_ca
                        ooh323_destroy(p);
                        ast_mutex_unlock(&iflock);
                        return NULL;
+               } else if (gH323ep.gkClient && gH323ep.gkClient->state != GkClientRegistered) {
+                       ast_log(LOG_ERROR, "Gatekeeper client is configured but not registered\n");
+                       *cause = AST_CAUSE_NORMAL_TEMPORARY_FAILURE;
+                       return NULL;
                }
                p->g729onlyA = g729onlyA;
                p->dtmfmode = gDTMFMode;
@@ -2615,8 +2622,6 @@ static struct ooh323_peer *build_peer(const char *name, struct ast_variable *v,
 
 static int ooh323_do_reload(void)
 {
-       extern OOH323EndPoint gH323ep;
-
        if (gH323Debug) {
                ast_verb(0, "---   ooh323_do_reload\n");
        }
@@ -3369,7 +3374,6 @@ static int ooh323_show_channels(int fd, int argc, char *argv[])
 static char *handle_cli_ooh323_show_gk(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
        char value[FORMAT_STRING_SIZE];
-       extern OOH323EndPoint gH323ep;
 
        switch (cmd) {
        case CLI_INIT: