Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
hiredis
Commits
307e29ac
Commit
307e29ac
authored
Jan 05, 2012
by
Pieter Noordhuis
Browse files
Use address helpers where applicable
parent
fbdcfae4
Changes
5
Show whitespace changes
Inline
Side-by-side
context.c
View file @
307e29ac
...
...
@@ -57,7 +57,7 @@ unsigned long redis_context_get_timeout(redis_context *ctx) {
static
int
redis__connect
(
redis_context
*
ctx
)
{
int
rv
;
rv
=
redis_handle_connect_address
(
&
ctx
->
handle
,
&
ctx
->
address
);
rv
=
redis_handle_connect_address
(
&
ctx
->
handle
,
ctx
->
address
);
if
(
rv
!=
REDIS_OK
)
{
return
rv
;
}
...
...
@@ -70,9 +70,11 @@ static int redis__connect(redis_context *ctx) {
return
REDIS_OK
;
}
static
int
redis_
_firs
t_connect
(
redis_context
*
ctx
)
{
int
redis_
contex
t_connect
_address
(
redis_context
*
ctx
,
const
redis_address
addr
)
{
int
rv
;
ctx
->
address
=
addr
;
rv
=
redis__connect
(
ctx
);
if
(
rv
!=
REDIS_OK
)
{
redis__clear_address
(
ctx
);
...
...
@@ -83,24 +85,15 @@ static int redis__first_connect(redis_context *ctx) {
}
int
redis_context_connect_in
(
redis_context
*
ctx
,
struct
sockaddr_in
addr
)
{
ctx
->
address
.
sa_family
=
AF_INET
;
ctx
->
address
.
sa_addrlen
=
sizeof
(
addr
);
ctx
->
address
.
sa_addr
.
in
=
addr
;
return
redis__first_connect
(
ctx
);
return
redis_context_connect_address
(
ctx
,
redis_address_from_in
(
addr
));
}
int
redis_context_connect_in6
(
redis_context
*
ctx
,
struct
sockaddr_in6
addr
)
{
ctx
->
address
.
sa_family
=
AF_INET6
;
ctx
->
address
.
sa_addrlen
=
sizeof
(
addr
);
ctx
->
address
.
sa_addr
.
in6
=
addr
;
return
redis__first_connect
(
ctx
);
return
redis_context_connect_address
(
ctx
,
redis_address_from_in6
(
addr
));
}
int
redis_context_connect_un
(
redis_context
*
ctx
,
struct
sockaddr_un
addr
)
{
ctx
->
address
.
sa_family
=
AF_LOCAL
;
ctx
->
address
.
sa_addrlen
=
sizeof
(
addr
);
ctx
->
address
.
sa_addr
.
un
=
addr
;
return
redis__first_connect
(
ctx
);
return
redis_context_connect_address
(
ctx
,
redis_address_from_un
(
addr
));
}
int
redis_context_connect_gai
(
redis_context
*
ctx
,
const
char
*
host
,
int
port
)
{
...
...
context.h
View file @
307e29ac
...
...
@@ -21,6 +21,7 @@ int redis_context_destroy(redis_context *ctx);
int
redis_context_set_timeout
(
redis_context
*
,
unsigned
long
us
);
unsigned
long
redis_handle_get_timeout
(
redis_handle
*
);
int
redis_context_connect_address
(
redis_context
*
,
const
redis_address
addr
);
int
redis_context_connect_in
(
redis_context
*
,
struct
sockaddr_in
addr
);
int
redis_context_connect_in6
(
redis_context
*
,
struct
sockaddr_in6
addr
);
int
redis_context_connect_un
(
redis_context
*
,
struct
sockaddr_un
addr
);
...
...
handle.c
View file @
307e29ac
...
...
@@ -158,7 +158,7 @@ static int redis__finish_connect(redis_handle *h, int fd) {
return
REDIS_OK
;
}
int
redis_handle_connect_address
(
redis_handle
*
h
,
const
redis_address
*
addr
)
{
int
redis_handle_connect_address
(
redis_handle
*
h
,
const
redis_address
addr
)
{
int
fd
;
if
(
h
->
fd
>=
0
)
{
...
...
@@ -166,7 +166,7 @@ int redis_handle_connect_address(redis_handle *h, const redis_address *addr) {
return
REDIS_ESYS
;
}
fd
=
redis__handle_connect
(
addr
->
sa_family
,
&
addr
->
sa_addr
.
addr
,
addr
->
sa_addrlen
);
fd
=
redis__handle_connect
(
addr
.
sa_family
,
&
addr
.
sa_addr
.
addr
,
addr
.
sa_addrlen
);
if
(
fd
==
-
1
)
{
return
REDIS_ESYS
;
}
...
...
@@ -175,30 +175,15 @@ int redis_handle_connect_address(redis_handle *h, const redis_address *addr) {
}
int
redis_handle_connect_in
(
redis_handle
*
h
,
struct
sockaddr_in
sa
)
{
redis_address
address
;
address
.
sa_family
=
AF_INET
;
address
.
sa_addr
.
in
=
sa
;
address
.
sa_addrlen
=
sizeof
(
sa
);
return
redis_handle_connect_address
(
h
,
&
address
);
return
redis_handle_connect_address
(
h
,
redis_address_from_in
(
sa
));
}
int
redis_handle_connect_in6
(
redis_handle
*
h
,
struct
sockaddr_in6
sa
)
{
redis_address
address
;
address
.
sa_family
=
AF_INET6
;
address
.
sa_addr
.
in6
=
sa
;
address
.
sa_addrlen
=
sizeof
(
sa
);
return
redis_handle_connect_address
(
h
,
&
address
);
return
redis_handle_connect_address
(
h
,
redis_address_from_in6
(
sa
));
}
int
redis_handle_connect_un
(
redis_handle
*
h
,
struct
sockaddr_un
sa
)
{
redis_address
address
;
address
.
sa_family
=
AF_LOCAL
;
address
.
sa_addr
.
un
=
sa
;
address
.
sa_addrlen
=
sizeof
(
sa
);
return
redis_handle_connect_address
(
h
,
&
address
);
return
redis_handle_connect_address
(
h
,
redis_address_from_un
(
sa
));
}
int
redis_handle_connect_gai
(
redis_handle
*
h
,
...
...
handle.h
View file @
307e29ac
...
...
@@ -30,7 +30,7 @@ int redis_handle_destroy(redis_handle *);
int
redis_handle_set_timeout
(
redis_handle
*
,
unsigned
long
us
);
unsigned
long
redis_handle_get_timeout
(
redis_handle
*
h
);
int
redis_handle_connect_address
(
redis_handle
*
,
const
redis_address
*
);
int
redis_handle_connect_address
(
redis_handle
*
,
const
redis_address
addr
);
int
redis_handle_connect_in
(
redis_handle
*
,
struct
sockaddr_in
addr
);
int
redis_handle_connect_in6
(
redis_handle
*
,
struct
sockaddr_in6
addr
);
int
redis_handle_connect_un
(
redis_handle
*
,
struct
sockaddr_un
addr
);
...
...
test/test-context.c
View file @
307e29ac
...
...
@@ -32,13 +32,8 @@
TEST
(
connect_in_refused
)
{
SETUP_CONNECT
();
struct
sockaddr_in
sa
;
memset
(
&
sa
,
0
,
sizeof
(
sa
));
sa
.
sin_family
=
AF_INET
;
sa
.
sin_port
=
htons
(
redis_port
()
+
1
);
assert
(
inet_pton
(
AF_INET
,
"127.0.0.1"
,
&
sa
.
sin_addr
)
==
1
);
rv
=
redis_context_connect_in
(
&
c
,
sa
);
redis_address
addr
=
redis_address_in
(
"127.0.0.1"
,
redis_port
()
+
1
);
rv
=
redis_context_connect_in
(
&
c
,
addr
.
sa_addr
.
in
);
assert_equal_return
(
rv
,
REDIS_ESYS
);
assert_equal_int
(
errno
,
ECONNREFUSED
);
...
...
@@ -51,13 +46,8 @@ TEST(connect_in_refused) {
TEST
(
connect_in6_refused
)
{
SETUP_CONNECT
();
struct
sockaddr_in6
sa
;
memset
(
&
sa
,
0
,
sizeof
(
sa
));
sa
.
sin6_family
=
AF_INET6
;
sa
.
sin6_port
=
htons
(
redis_port
()
+
1
);
assert
(
inet_pton
(
AF_INET6
,
"::1"
,
&
sa
.
sin6_addr
)
==
1
);
rv
=
redis_context_connect_in6
(
&
c
,
sa
);
redis_address
addr
=
redis_address_in6
(
"::1"
,
redis_port
()
+
1
);
rv
=
redis_context_connect_in6
(
&
c
,
addr
.
sa_addr
.
in6
);
assert_equal_return
(
rv
,
REDIS_ESYS
);
assert_equal_int
(
errno
,
ECONNREFUSED
);
...
...
@@ -70,12 +60,8 @@ TEST(connect_in6_refused) {
TEST
(
connect_un_noent
)
{
SETUP_CONNECT
();
struct
sockaddr_un
sa
;
memset
(
&
sa
,
0
,
sizeof
(
sa
));
sa
.
sun_family
=
AF_LOCAL
;
strcpy
((
char
*
)
&
sa
.
sun_path
,
"/tmp/idontexist.sock"
);
rv
=
redis_context_connect_un
(
&
c
,
sa
);
redis_address
addr
=
redis_address_un
(
"/tmp/idontexist.sock"
);
rv
=
redis_context_connect_un
(
&
c
,
addr
.
sa_addr
.
un
);
assert_equal_return
(
rv
,
REDIS_ESYS
);
assert_equal_int
(
errno
,
ENOENT
);
...
...
@@ -88,15 +74,11 @@ TEST(connect_un_noent) {
TEST
(
connect_timeout
)
{
SETUP_CONNECT
();
struct
sockaddr_in
sa
;
memset
(
&
sa
,
0
,
sizeof
(
sa
));
sa
.
sin_family
=
AF_INET
;
sa
.
sin_port
=
htons
(
redis_port
());
assert
(
inet_pton
(
AF_INET
,
"10.255.255.254"
,
&
sa
.
sin_addr
)
==
1
);
redis_address
addr
=
redis_address_in
(
"10.255.255.254"
,
redis_port
());
long
long
t1
,
t2
;
t1
=
usec
();
rv
=
redis_context_connect_in
(
&
c
,
s
a
);
rv
=
redis_context_connect_in
(
&
c
,
a
ddr
.
sa_addr
.
in
);
t2
=
usec
();
assert_equal_return
(
rv
,
REDIS_ESYS
);
...
...
@@ -112,13 +94,8 @@ TEST(connect_timeout) {
TEST
(
connect_success
)
{
SETUP_CONNECT
();
struct
sockaddr_in
sa
;
memset
(
&
sa
,
0
,
sizeof
(
sa
));
sa
.
sin_family
=
AF_INET
;
sa
.
sin_port
=
htons
(
redis_port
());
assert
(
inet_pton
(
AF_INET
,
"127.0.0.1"
,
&
sa
.
sin_addr
)
==
1
);
rv
=
redis_context_connect_in
(
&
c
,
sa
);
redis_address
addr
=
redis_address_in
(
"127.0.0.1"
,
redis_port
());
rv
=
redis_context_connect_in
(
&
c
,
addr
.
sa_addr
.
in
);
assert_equal_return
(
rv
,
REDIS_OK
);
/* Address should be set when connection was made */
...
...
@@ -278,20 +255,14 @@ TEST(call_command_argv) {
TEST
(
flush_against_full_kernel_buffer
)
{
SETUP_CONNECT
();
struct
sockaddr_in
sa
;
memset
(
&
sa
,
0
,
sizeof
(
sa
));
sa
.
sin_family
=
AF_INET
;
sa
.
sin_port
=
htons
(
redis_port
()
+
1
);
assert
(
inet_pton
(
AF_INET
,
"127.0.0.1"
,
&
sa
.
sin_addr
)
==
1
);
redis_address
addr
=
redis_address_in
(
"127.0.0.1"
,
redis_port
()
+
1
);
accept_and_ignore_args
args
;
args
.
address
.
sa_family
=
sa
.
sin_family
;
args
.
address
.
sa_addrlen
=
sizeof
(
sa
);
args
.
address
.
sa_addr
.
in
=
sa
;
args
.
address
=
addr
;
spawn
(
accept_and_ignore
,
&
args
);
rv
=
redis_context_connect_in
(
&
c
,
s
a
);
rv
=
redis_context_connect_in
(
&
c
,
a
ddr
.
sa_addr
.
in
);
assert_equal_return
(
rv
,
REDIS_OK
);
/* Now write and flush until error */
...
...
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