Add 'rtpengine-ctl set maxsessions X' command

pull/192/head
smititelu 10 years ago
parent c44c35af55
commit 00bb10bba7

@ -107,7 +107,7 @@ static void cli_incoming_list_totals(char* buffer, int len, struct callmaster* m
static void cli_incoming_list_maxsessions(char* buffer, int len, struct callmaster* m, char* replybuffer, const char* outbufend) {
int printlen=0;
/* don't lock while reading the value */
/* don't lock anything while reading the value */
printlen = snprintf(replybuffer,(outbufend-replybuffer), "Maximum sessions configured on rtpengine: %d\n", m->conf.max_sessions);
ADJUSTLEN(printlen,outbufend,replybuffer);
}
@ -259,6 +259,38 @@ static void cli_incoming_set_max_open_files(char* buffer, int len, struct callma
}
}
static void cli_incoming_set_maxsessions(char* buffer, int len, struct callmaster* m, char* replybuffer, const char* outbufend) {
int printlen = 0;
int maxsessions_num;
str maxsessions;
if (len<=1) {
printlen = snprintf(replybuffer,(outbufend-replybuffer), "%s\n", "More parameters required.");
ADJUSTLEN(printlen,outbufend,replybuffer);
return;
}
++buffer; --len; // one space
maxsessions.s = buffer;
maxsessions.len = len;
maxsessions_num = str_to_i(&maxsessions, -1);
if (maxsessions_num == -1) {
printlen = snprintf (replybuffer,(outbufend-replybuffer), "Fail setting maxsessions to %.*s; not an integer\n", maxsessions.len, maxsessions.s);
ADJUSTLEN(printlen,outbufend,replybuffer);
return;
} else if (maxsessions_num < 0) {
printlen = snprintf (replybuffer,(outbufend-replybuffer), "Fail setting maxsessions to %d; negative value\n", maxsessions_num);
ADJUSTLEN(printlen,outbufend,replybuffer);
return;
} else {
/* don't lock anything while writing the value - only this command modifies its value */
m->conf.max_sessions = maxsessions_num;
printlen = snprintf (replybuffer,(outbufend-replybuffer), "Success setting maxsessions to %d\n", maxsessions_num);
ADJUSTLEN(printlen,outbufend,replybuffer);
}
}
static void cli_incoming_list(char* buffer, int len, struct callmaster* m, char* replybuffer, const char* outbufend) {
GHashTableIter iter;
gpointer key, value;
@ -316,6 +348,7 @@ static void cli_incoming_set(char* buffer, int len, struct callmaster* m, char*
int printlen=0;
static const char* SET_OPEN_FILES = "max-open-files";
static const char* SET_MAX_SESSIONS = "maxsessions";
if (len<=1) {
printlen = snprintf(replybuffer, outbufend-replybuffer, "%s\n", "More parameters required.");
@ -326,6 +359,8 @@ static void cli_incoming_set(char* buffer, int len, struct callmaster* m, char*
if (len>=strlen(SET_OPEN_FILES) && strncmp(buffer,SET_OPEN_FILES,strlen(SET_OPEN_FILES)) == 0) {
cli_incoming_set_max_open_files(buffer+strlen(SET_OPEN_FILES), len-strlen(SET_OPEN_FILES), m, replybuffer, outbufend);
} else if (len>=strlen(SET_MAX_SESSIONS) && strncmp(buffer,SET_MAX_SESSIONS,strlen(SET_MAX_SESSIONS)) == 0) {
cli_incoming_set_maxsessions(buffer+strlen(SET_MAX_SESSIONS), len-strlen(SET_MAX_SESSIONS), m, replybuffer, outbufend);
} else {
printlen = snprintf(replybuffer, outbufend-replybuffer, "%s:%s\n", "Unknown 'set' command", buffer);
ADJUSTLEN(printlen,outbufend,replybuffer);

@ -247,6 +247,7 @@ INLINE void str_swap(str *a, str *b) {
INLINE int str_to_i(str *s, int def) {
char c, *ep;
long ret;
int maxint = 0x7FFFFFFF;
if (s->len <= 0)
return def;
c = s->s[s->len];
@ -255,6 +256,8 @@ INLINE int str_to_i(str *s, int def) {
s->s[s->len] = c;
if (ep == s->s)
return def;
if (ret > maxint)
return def;
return ret;
}

Loading…
Cancel
Save