--- asterisk/channels/chan_iax2.c 2004-04-28 22:19:16.893796128 +0200 +++ asterisk/channels/chan_iax2.new 2004-04-28 22:18:54.216243640 +0200 @@ -108,6 +108,8 @@ static char context[80] = "default"; +static char language[MAX_LANGUAGE] = ""; + static int max_retries = 4; static int ping_time = 20; static int lagrq_time = 10; @@ -189,6 +191,7 @@ int authmethods; char accountcode[20]; char inkeys[80]; /* Key(s) this user can use to authenticate to us */ + char language[MAX_LANGUAGE]; int amaflags; int hascallerid; int delme; @@ -409,7 +412,7 @@ /* Private key for outgoing authentication */ char outkey[80]; /* Preferred language */ - char language[80]; + char language[MAX_LANGUAGE]; /* Hostname/peername for naming purposes */ char host[80]; /* Associated registry */ @@ -3414,6 +3417,8 @@ strncpy(iaxs[callno]->accountcode, user->accountcode, sizeof(iaxs[callno]->accountcode)-1); if (user->amaflags) iaxs[callno]->amaflags = user->amaflags; + if (strlen(user->language)) + strncpy(iaxs[callno]->language, user->language, sizeof(iaxs[callno]->language)-1); iaxs[callno]->notransfer = user->notransfer; res = 0; } @@ -5986,6 +5991,7 @@ memset(user, 0, sizeof(struct iax2_user)); user->capability = iax2_capability; strncpy(user->name, name, sizeof(user->name)-1); + strcpy(user->language, language); while(v) { if (!strcasecmp(v->name, "context")) { con = build_context(v->value); @@ -6028,6 +6034,8 @@ user->hascallerid=1; } else if (!strcasecmp(v->name, "accountcode")) { strncpy(user->accountcode, v->value, sizeof(user->accountcode)-1); + } else if (!strcasecmp(v->name, "language")) { + strncpy(user->language, v->value, sizeof(user->language)-1); } else if (!strcasecmp(v->name, "amaflags")) { format = ast_cdr_amaflags2int(v->value); if (format < 0) { @@ -6277,6 +6285,8 @@ } else if (!strcasecmp(v->name, "dbname")) { strncpy(mydbname, v->value, sizeof(mydbname) - 1); #endif + } else if (!strcasecmp(v->name, "language")) { + strncpy(language, v->value, sizeof(language) - 1); } //else if (strcasecmp(v->name,"type")) // ast_log(LOG_WARNING, "Ignoring %s\n", v->name); v = v->next; @@ -6339,6 +6349,7 @@ struct sockaddr_in dead_sin; struct iax2_peer *peer; strncpy(accountcode, "", sizeof(accountcode)-1); + strncpy(language, "", sizeof(language)-1); amaflags = 0; notransfer = 0; srand(time(NULL));