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