projects
/
m6w6
/
libmemcached
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
move repository from m6w6 to awesomized
[m6w6/libmemcached]
/
src
/
libmemcached
/
parse.cc
diff --git
a/src/libmemcached/parse.cc
b/src/libmemcached/parse.cc
index 12431222e3dfea0c72215484d1ebb28af13d7815..5fe34ba8311b8ba04554d1a480f8920ad95fcb39 100644
(file)
--- a/
src/libmemcached/parse.cc
+++ b/
src/libmemcached/parse.cc
@@
-9,7
+9,7
@@
| the terms online at: https://opensource.org/licenses/BSD-3-Clause |
+--------------------------------------------------------------------+
| Copyright (c) 2006-2014 Brian Aker https://datadifferential.com/ |
| the terms online at: https://opensource.org/licenses/BSD-3-Clause |
+--------------------------------------------------------------------+
| Copyright (c) 2006-2014 Brian Aker https://datadifferential.com/ |
- | Copyright (c) 2020
Michael Wallner <mike@php.net>
|
+ | Copyright (c) 2020
-2021 Michael Wallner https://awesome.co/
|
+--------------------------------------------------------------------+
*/
+--------------------------------------------------------------------+
*/
@@
-30,7
+30,7
@@
memcached_server_list_st memcached_servers_parse(const char *server_strings) {
begin_ptr != end_ptr; string = (char *) strchr(begin_ptr, ','))
{
char buffer[HUGE_STRING_LEN];
begin_ptr != end_ptr; string = (char *) strchr(begin_ptr, ','))
{
char buffer[HUGE_STRING_LEN];
- char *ptr, *ptr2;
+ char *ptr, *ptr2
= NULL
;
uint32_t weight = 0;
if (string) {
uint32_t weight = 0;
if (string) {
@@
-44,8
+44,17
@@
memcached_server_list_st memcached_servers_parse(const char *server_strings) {
begin_ptr = end_ptr;
}
begin_ptr = end_ptr;
}
- ptr = strchr(buffer, ':');
-
+ ptr = strchr(buffer, '[');
+ if (ptr) {
+ ptr2 = strchr(ptr+1, ']');
+ }
+ if (ptr && ptr2) {
+ // [IPv6]:port
+ ptr = strchr(ptr2+1, ':');
+ } else {
+ // IPv4:port or name:port
+ ptr = strchr(buffer, ':');
+ }
in_port_t port = 0;
if (ptr) {
ptr[0] = 0;
in_port_t port = 0;
if (ptr) {
ptr[0] = 0;