summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Redis 2.7.102 (2.8 Release Candidate 2).2.8.0-rc2antirez2013-07-302-1/+12
|
* Test: regression test for issue #1221.antirez2013-07-291-0/+38
|
* Fix replicationFeedSlaves() off-by-one bug.antirez2013-07-281-2/+2
| | | | This fixes issue #1221.
* Remove dead variable bothsds from object.c.antirez2013-07-281-3/+0
| | | | | | | | | | Thanks to @run and @badboy for spotting this. Triva: clang was not able to provide me a warning about that when compiling. This closes #1024 and #1207, committing the change myself as the pull requests no longer apply cleanly after other changes to the same function.
* Use latest sds.c in the hiredis library under deps.antirez2013-07-254-120/+422
|
* Ignore sdsrange return value.antirez2013-07-241-2/+2
|
* sdsrange() does not need to return a value.antirez2013-07-244-10/+9
| | | | | | Actaully the string is modified in-place and a reallocation is never needed, so there is no need to return the new sds string pointer as return value of the function, that is now just "void".
* Inline protocol improved to accept quoted strings.antirez2013-07-241-2/+4
|
* Every function inside sds.c is now commented.antirez2013-07-231-7/+145
|
* Merge remote-tracking branch 'origin/2.8' into 2.8antirez2013-07-191-9/+9
|\
| * Merge pull request #1203 from ronnix/patch-1Salvatore Sanfilippo2013-07-181-9/+9
| |\ | | | | | | Fix a few typos in release notes
| | * Fix a few typos in release notesRonan Amicel2013-07-181-9/+9
| |/
* | Fixed typo in 2.8 release notes.antirez2013-07-181-2/+2
|/
* Redis 2.7.101 (2.8 Release Candidate 1).2.8.0-rc1antirez2013-07-186-1070/+94
|
* addReplyDouble(): format infinite in a libc agnostic way.antirez2013-07-171-3/+10
| | | | | | | | There are systems that when printing +/- infinte with printf-family functions will not use the usual "inf" "-inf", but different strings. Handle that explicitly. Fixes issue #930.
* Fixed typo in rio.h, simgle -> single.antirez2013-07-161-1/+1
|
* Chunked loading of RDB to prevent redis from stalling reading very large keys.yoav2013-07-165-15/+45
|
* Make sure that ZADD can accept the full range of double values.antirez2013-07-161-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes issue #1194, that contains many details. However in short, it was possible for ZADD to not accept as score values that was however possible to obtain with multiple calls to ZINCRBY, like in the following example: redis 127.0.0.1:6379> zadd k 2.5e-308 m (integer) 1 redis 127.0.0.1:6379> zincrby k -2.4e-308 m "9.9999999999999694e-310" redis 127.0.0.1:6379> zscore k m "9.9999999999999694e-310" redis 127.0.0.1:6379> zadd k 9.9999999999999694e-310 m1 (error) ERR value is not a valid float The problem was due to strtod() returning ERANGE in the following case specified by POSIX: "If the correct value would cause an underflow, a value whose magnitude is no greater than the smallest normalized positive number in the return type shall be returned and errno set to [ERANGE].". Now instead the returned value is accepted even when ERANGE is returned as long as the return value of the function is not negative or positive HUGE_VAL or zero.
* Make sure the log standardizes on 'timeout'Ted Nyman2013-07-121-1/+1
|
* Use the environment locale for strcoll() collation.antirez2013-07-121-0/+2
|
* SORT ALPHA: use collation instead of binary comparison.antirez2013-07-122-3/+15
| | | | | | | | | Note that we only do it when STORE is not used, otherwise we want an absolutely locale independent and binary safe sorting in order to ensure AOF / replication consistency. This is probably an unexpected behavior violating the least surprise rule, but there is currently no other simple / good alternative.
* Fixed compareStringObject() and introduced collateStringObject().antirez2013-07-122-8/+34
| | | | | | | | | | | | | | | | | | | | | | | compareStringObject was not always giving the same result when comparing two exact strings, but encoded as integers or as sds strings, since it switched to strcmp() when at least one of the strings were not sds encoded. For instance the two strings "123" and "123\x00456", where the first string was integer encoded, would result into the old implementation of compareStringObject() to return 0 as if the strings were equal, while instead the second string is "greater" than the first in a binary comparison. The same compasion, but with "123" encoded as sds string, would instead return a value < 0, as it is correct. It is not impossible that the above caused some obscure bug, since the comparison was not always deterministic, and compareStringObject() is used in the implementation of skiplists, hash tables, and so forth. At the same time, collateStringObject() was introduced by this commit, so that can be used by SORT command to return sorted strings usign collation instead of binary comparison. See next commit.
* Wrap IPv6 in brackets in the prompt.Jan-Erik Rediger2013-07-121-1/+2
|
* Sentinel: embed IPv6 address into [] when naming slave/sentinel instance.antirez2013-07-111-2/+6
|
* Sentinel: use comma as separator to publish hello messages.antirez2013-07-111-3/+6
| | | | | We use comma to play well with IPv6 addresses, but the implementation is still able to parse the old messages separated by colons.
* hiredis: minimal IPv6 support.antirez2013-07-111-2/+10
|
* Sentinel: make sure published addr/id buffer is large enough.antirez2013-07-111-1/+1
| | | | | With ipv6 support we need more space, so we account for the IP address max size plus what we need for the Run ID, port, flags.
* anet.c: save some vertical space.antirez2013-07-111-10/+3
|
* anet.c: use SO_REUSEADDR when creating listening sockets.antirez2013-07-111-5/+3
| | | | | It used to be ok, but the socket option was removed when adding IPv6 support.
* Use getClientPeerId() for MONITOR implementation.antirez2013-07-111-4/+4
|
* getClientPeerId() refactored into two functions.antirez2013-07-112-4/+13
|
* getClientPeerId() now reports errors.antirez2013-07-112-14/+14
| | | | We now also use it in CLIENT KILL implementation.
* getClientPeerID introduced.antirez2013-07-112-7/+36
| | | | | | | The function returns an unique identifier for the client, as ip:port for IPv4 and IPv6 clients, or as path:0 for Unix socket clients. See the top comment in the function for more info.
* All IP string repr buffers are now REDIS_IP_STR_LEN bytes.antirez2013-07-113-5/+4
|
* IPv6: bind IPv4 and IPv6 interfaces by default.antirez2013-07-112-2/+13
|
* Fix old anetPeerToString() API call in replication.cantirez2013-07-112-4/+2
|
* Revert "Document port6 and bind6 config options."antirez2013-07-111-2/+0
| | | | | | | | | IPv6 support is not going to use IPv6 specific options, just it will be possible to specify all the ipv4 / ipv6 addresses of the interfaces to bind, otherwise connections will be accepted from all the interfaces in both IPv4 and IPv6 addresses. This reverts commit 93570e179e96dc096b85aa0fcd5021b05208594a.
* Add IPv6 support to sentinel.c.Geoff Garside2013-07-112-5/+5
| | | | | | | | | This has been done by exposing the anetSockName() function anet.c to be used when the sentinel is publishing its existence to the masters. This implementation is very unintelligent as it will likely break if used with IPv6 as the nested colons will break any parsing of the PUBLISH string by the master.
* Cleanup main() and BACKTRACE mistaken pulled while rebasing.Geoff Garside2013-07-111-0/+2
|
* Fix calls to anetPeerToString() missing buffer size.Geoff Garside2013-07-111-1/+1
|
* Document port6 and bind6 config options.Geoff Garside2013-07-111-0/+2
| | | | Add commented port6 and bind6 options to default redis.conf file.
* Add anetTcp6Server() function.Geoff Garside2013-07-112-2/+16
| | | | | Refactor the common code from anetTcpServer into internal function which can be used by both anetTcpServer and anetTcp6Server.
* Add static anetV6Only() function.Geoff Garside2013-07-111-0/+10
| | | | | This function sets the IPV6_V6ONLY option to 1 to use separate stack IPv6 sockets.
* Change anetTcpGenericConnect to use AF_UNSPEC.Geoff Garside2013-07-111-1/+1
| | | | | This allows anetTcpGenericConnect to try to connect to AF_INET6 addresses in addition to any resolved AF_INET addresses.
* Mark places that might want changing for IPv6.Geoff Garside2013-07-111-0/+1
| | | | | | | | | | | | | | | | | | | | Any places which I feel might want to be updated to work differently with IPv6 have been marked with a comment starting "IPV6:". Currently the only comments address places where an IP address is combined with a port using the standard : separated form. These may want to be changed when printing IPv6 addresses to wrap the address in [] such as [2001:db8::c0:ffee]:6379 instead of 2001:db8::c0:ffee:6379 as the latter format is a technically valid IPv6 address and it is hard to distinguish the IPv6 address component from the port unless you know the port is supposed to be there.
* Expand ip char buffers which are too small for v6.Geoff Garside2013-07-111-2/+3
| | | | | Increase the size of character buffers being used to store printable IP addresses so that they can safely store IPv6 addresses.
* Mark ip string buffers which could be reduced.Geoff Garside2013-07-111-1/+1
| | | | | | | In two places buffers have been created with a size of 128 bytes which could be reduced to INET6_ADDRSTRLEN to still hold a full IP address. These places have been marked as they are presently big enough to handle the needs of storing a printable IPv6 address.
* Update anetPeerToString to handle AF_INET6 addrs.Geoff Garside2013-07-111-6/+20
| | | | | | Change the sockaddr_in to sockaddr_storage which is capable of storing both AF_INET and AF_INET6 sockets. Uses the sockaddr_storage ss_family to correctly return the printable IP address and port.
* Update anetTcpAccept to handle AF_INET6 addresses.Geoff Garside2013-07-111-3/+10
| | | | | | Change the sockaddr_in to sockaddr_storage which is capable of storing both AF_INET and AF_INET6 sockets. Uses the sockaddr_storage ss_family to correctly return the printable IP address and port.
* Update anetResolve to resolve AF_INET6 as well.Geoff Garside2013-07-111-4/+6
| | | | | | | | | | | | | | | Change the getaddrinfo(3) hints family from AF_INET to AF_UNSPEC to allow resolution of IPv6 addresses as well as IPv4 addresses. The function will return the IP address of whichever address family is preferenced by the operating system. Most current operating systems will preference AF_INET6 over AF_INET. Unfortunately without attempting to establish a connection to the remote address we can't know if the host is capable of using the returned IP address. It might be desirable to have anetResolve accept an additional argument specifying the AF_INET/AF_INET6 address the caller would like to receive. Currently though it does not appear as though the anetResolve function is ever used within Redis.