Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
36c62ae7
Commit
36c62ae7
authored
Feb 12, 2015
by
antirez
Browse files
Merge branch 'testing' into 3.0
parents
5bcaff42
9e6155f4
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/config.c
View file @
36c62ae7
...
@@ -609,6 +609,7 @@ void loadServerConfig(char *filename, char *options) {
...
@@ -609,6 +609,7 @@ void loadServerConfig(char *filename, char *options) {
void
configSetCommand
(
redisClient
*
c
)
{
void
configSetCommand
(
redisClient
*
c
)
{
robj
*
o
;
robj
*
o
;
long
long
ll
;
long
long
ll
;
int
err
;
redisAssertWithInfo
(
c
,
c
->
argv
[
2
],
sdsEncodedObject
(
c
->
argv
[
2
]));
redisAssertWithInfo
(
c
,
c
->
argv
[
2
],
sdsEncodedObject
(
c
->
argv
[
2
]));
redisAssertWithInfo
(
c
,
c
->
argv
[
3
],
sdsEncodedObject
(
c
->
argv
[
3
]));
redisAssertWithInfo
(
c
,
c
->
argv
[
3
],
sdsEncodedObject
(
c
->
argv
[
3
]));
o
=
c
->
argv
[
3
];
o
=
c
->
argv
[
3
];
...
@@ -628,8 +629,8 @@ void configSetCommand(redisClient *c) {
...
@@ -628,8 +629,8 @@ void configSetCommand(redisClient *c) {
zfree
(
server
.
masterauth
);
zfree
(
server
.
masterauth
);
server
.
masterauth
=
((
char
*
)
o
->
ptr
)[
0
]
?
zstrdup
(
o
->
ptr
)
:
NULL
;
server
.
masterauth
=
((
char
*
)
o
->
ptr
)[
0
]
?
zstrdup
(
o
->
ptr
)
:
NULL
;
}
else
if
(
!
strcasecmp
(
c
->
argv
[
2
]
->
ptr
,
"maxmemory"
))
{
}
else
if
(
!
strcasecmp
(
c
->
argv
[
2
]
->
ptr
,
"maxmemory"
))
{
if
(
getLongLongFromObject
(
o
,
&
ll
)
==
REDIS_ERR
||
ll
=
memtoll
(
o
->
ptr
,
&
err
);
ll
<
0
)
goto
badfmt
;
if
(
err
||
ll
<
0
)
goto
badfmt
;
server
.
maxmemory
=
ll
;
server
.
maxmemory
=
ll
;
if
(
server
.
maxmemory
)
{
if
(
server
.
maxmemory
)
{
if
(
server
.
maxmemory
<
zmalloc_used_memory
())
{
if
(
server
.
maxmemory
<
zmalloc_used_memory
())
{
...
@@ -851,7 +852,6 @@ void configSetCommand(redisClient *c) {
...
@@ -851,7 +852,6 @@ void configSetCommand(redisClient *c) {
* whole configuration string or accept it all, even if a single
* whole configuration string or accept it all, even if a single
* error in a single client class is present. */
* error in a single client class is present. */
for
(
j
=
0
;
j
<
vlen
;
j
++
)
{
for
(
j
=
0
;
j
<
vlen
;
j
++
)
{
char
*
eptr
;
long
val
;
long
val
;
if
((
j
%
4
)
==
0
)
{
if
((
j
%
4
)
==
0
)
{
...
@@ -860,8 +860,8 @@ void configSetCommand(redisClient *c) {
...
@@ -860,8 +860,8 @@ void configSetCommand(redisClient *c) {
goto
badfmt
;
goto
badfmt
;
}
}
}
else
{
}
else
{
val
=
str
toll
(
v
[
j
],
&
e
ptr
,
10
);
val
=
mem
toll
(
v
[
j
],
&
e
rr
);
if
(
e
ptr
[
0
]
!=
'\0'
||
val
<
0
)
{
if
(
e
rr
||
val
<
0
)
{
sdsfreesplitres
(
v
,
vlen
);
sdsfreesplitres
(
v
,
vlen
);
goto
badfmt
;
goto
badfmt
;
}
}
...
@@ -895,7 +895,8 @@ void configSetCommand(redisClient *c) {
...
@@ -895,7 +895,8 @@ void configSetCommand(redisClient *c) {
if
(
getLongLongFromObject
(
o
,
&
ll
)
==
REDIS_ERR
||
ll
<=
0
)
goto
badfmt
;
if
(
getLongLongFromObject
(
o
,
&
ll
)
==
REDIS_ERR
||
ll
<=
0
)
goto
badfmt
;
server
.
repl_timeout
=
ll
;
server
.
repl_timeout
=
ll
;
}
else
if
(
!
strcasecmp
(
c
->
argv
[
2
]
->
ptr
,
"repl-backlog-size"
))
{
}
else
if
(
!
strcasecmp
(
c
->
argv
[
2
]
->
ptr
,
"repl-backlog-size"
))
{
if
(
getLongLongFromObject
(
o
,
&
ll
)
==
REDIS_ERR
||
ll
<=
0
)
goto
badfmt
;
ll
=
memtoll
(
o
->
ptr
,
&
err
);
if
(
err
||
ll
<
0
)
goto
badfmt
;
resizeReplicationBacklog
(
ll
);
resizeReplicationBacklog
(
ll
);
}
else
if
(
!
strcasecmp
(
c
->
argv
[
2
]
->
ptr
,
"repl-backlog-ttl"
))
{
}
else
if
(
!
strcasecmp
(
c
->
argv
[
2
]
->
ptr
,
"repl-backlog-ttl"
))
{
if
(
getLongLongFromObject
(
o
,
&
ll
)
==
REDIS_ERR
||
ll
<
0
)
goto
badfmt
;
if
(
getLongLongFromObject
(
o
,
&
ll
)
==
REDIS_ERR
||
ll
<
0
)
goto
badfmt
;
...
...
src/util.c
View file @
36c62ae7
...
@@ -38,6 +38,7 @@
...
@@ -38,6 +38,7 @@
#include <sys/time.h>
#include <sys/time.h>
#include <float.h>
#include <float.h>
#include <stdint.h>
#include <stdint.h>
#include <errno.h>
#include "util.h"
#include "util.h"
#include "sha1.h"
#include "sha1.h"
...
@@ -170,11 +171,12 @@ int stringmatch(const char *pattern, const char *string, int nocase) {
...
@@ -170,11 +171,12 @@ int stringmatch(const char *pattern, const char *string, int nocase) {
}
}
/* Convert a string representing an amount of memory into the number of
/* Convert a string representing an amount of memory into the number of
* bytes, so for instance memtoll("1G
i
") will return 1073741824 that is
* bytes, so for instance memtoll("1G
b
") will return 1073741824 that is
* (1024*1024*1024).
* (1024*1024*1024).
*
*
* On parsing error, if *err is not NULL, it's set to 1, otherwise it's
* On parsing error, if *err is not NULL, it's set to 1, otherwise it's
* set to 0 */
* set to 0. On error the function return value is 0, regardless of the
* fact 'err' is NULL or not. */
long
long
memtoll
(
const
char
*
p
,
int
*
err
)
{
long
long
memtoll
(
const
char
*
p
,
int
*
err
)
{
const
char
*
u
;
const
char
*
u
;
char
buf
[
128
];
char
buf
[
128
];
...
@@ -183,6 +185,7 @@ long long memtoll(const char *p, int *err) {
...
@@ -183,6 +185,7 @@ long long memtoll(const char *p, int *err) {
unsigned
int
digits
;
unsigned
int
digits
;
if
(
err
)
*
err
=
0
;
if
(
err
)
*
err
=
0
;
/* Search the first non digit character. */
/* Search the first non digit character. */
u
=
p
;
u
=
p
;
if
(
*
u
==
'-'
)
u
++
;
if
(
*
u
==
'-'
)
u
++
;
...
@@ -203,16 +206,26 @@ long long memtoll(const char *p, int *err) {
...
@@ -203,16 +206,26 @@ long long memtoll(const char *p, int *err) {
mul
=
1024L
*
1024
*
1024
;
mul
=
1024L
*
1024
*
1024
;
}
else
{
}
else
{
if
(
err
)
*
err
=
1
;
if
(
err
)
*
err
=
1
;
mul
=
1
;
return
0
;
}
}
/* Copy the digits into a buffer, we'll use strtoll() to convert
* the digit (without the unit) into a number. */
digits
=
u
-
p
;
digits
=
u
-
p
;
if
(
digits
>=
sizeof
(
buf
))
{
if
(
digits
>=
sizeof
(
buf
))
{
if
(
err
)
*
err
=
1
;
if
(
err
)
*
err
=
1
;
return
LLONG_MAX
;
return
0
;
}
}
memcpy
(
buf
,
p
,
digits
);
memcpy
(
buf
,
p
,
digits
);
buf
[
digits
]
=
'\0'
;
buf
[
digits
]
=
'\0'
;
val
=
strtoll
(
buf
,
NULL
,
10
);
char
*
endptr
;
errno
=
0
;
val
=
strtoll
(
buf
,
&
endptr
,
10
);
if
((
val
==
0
&&
errno
==
EINVAL
)
||
*
endptr
!=
'\0'
)
{
if
(
err
)
*
err
=
1
;
return
0
;
}
return
val
*
mul
;
return
val
*
mul
;
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment