|
|
|
|
@ -307,9 +307,9 @@ static void cli_incoming_set_maxopenfiles(char* buffer, int len, struct callmast
|
|
|
|
|
static void cli_incoming_set_maxsessions(char* buffer, int len, struct callmaster* m, char* replybuffer, const char* outbufend) {
|
|
|
|
|
int printlen = 0;
|
|
|
|
|
int maxsessions_num;
|
|
|
|
|
int err = 0x80000000;
|
|
|
|
|
int disabled = -1;
|
|
|
|
|
str maxsessions;
|
|
|
|
|
char *endptr;
|
|
|
|
|
|
|
|
|
|
if (len <= 1) {
|
|
|
|
|
printlen = snprintf(replybuffer,(outbufend-replybuffer), "%s\n", "More parameters required.");
|
|
|
|
|
@ -320,11 +320,16 @@ static void cli_incoming_set_maxsessions(char* buffer, int len, struct callmaste
|
|
|
|
|
++buffer; --len; // one space
|
|
|
|
|
maxsessions.s = buffer;
|
|
|
|
|
maxsessions.len = len;
|
|
|
|
|
maxsessions_num = str_to_i(&maxsessions, err);
|
|
|
|
|
maxsessions_num = strtol(maxsessions.s, &endptr, 10);
|
|
|
|
|
|
|
|
|
|
if (maxsessions_num == err) {
|
|
|
|
|
printlen = snprintf (replybuffer,(outbufend-replybuffer), "Fail setting maxsessions to %.*s; not an integer\n", maxsessions.len, maxsessions.s);
|
|
|
|
|
if ((errno == ERANGE && (maxsessions_num == LONG_MAX || maxsessions_num == LONG_MIN)) || (errno != 0 && maxsessions_num == 0)) {
|
|
|
|
|
printlen = snprintf (replybuffer,(outbufend-replybuffer), "Fail setting maxsessions to %.*s; errno=%d\n", maxsessions.len, maxsessions.s, errno);
|
|
|
|
|
ADJUSTLEN(printlen,outbufend,replybuffer);
|
|
|
|
|
return;
|
|
|
|
|
} else if (endptr == maxsessions.s) {
|
|
|
|
|
printlen = snprintf (replybuffer,(outbufend-replybuffer), "Fail setting maxsessions to %.*s; no digists found\n", maxsessions.len, maxsessions.s);
|
|
|
|
|
ADJUSTLEN(printlen,outbufend,replybuffer);
|
|
|
|
|
return;
|
|
|
|
|
} else if (maxsessions_num < disabled) {
|
|
|
|
|
printlen = snprintf (replybuffer,(outbufend-replybuffer), "Fail setting maxsessions to %d; either positive or -1 values allowed\n", maxsessions_num);
|
|
|
|
|
ADJUSTLEN(printlen,outbufend,replybuffer);
|
|
|
|
|
|