diff options
author | Jeff Darcy <jdarcy@redhat.com> | 2012-11-05 11:24:57 -0500 |
---|---|---|
committer | Vijay Bellur <vbellur@redhat.com> | 2012-11-12 07:17:13 -0800 |
commit | 128514fcb7f4943e6c97139f873db68a009ae893 (patch) | |
tree | ffdf880dc8f301fc80bf293cde049dfdd8450bdd | |
parent | 009c728b401287ef9aa9ee4a7fb509ccc5baa156 (diff) |
socket: fix SSL breakage from re/connect handling changes
Change-Id: Ia1f5aeec5628b61cad8a10a9cdc6d9f1c67ec653
BUG: 873367
Signed-off-by: Jeff Darcy <jdarcy@redhat.com>
Reviewed-on: http://review.gluster.org/4158
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
-rw-r--r-- | rpc/rpc-transport/socket/src/socket.c | 16 | ||||
-rwxr-xr-x | tests/bugs/bug-873367.t | 41 |
2 files changed, 50 insertions, 7 deletions
diff --git a/rpc/rpc-transport/socket/src/socket.c b/rpc/rpc-transport/socket/src/socket.c index b043f52ef83..ff6983f813b 100644 --- a/rpc/rpc-transport/socket/src/socket.c +++ b/rpc/rpc-transport/socket/src/socket.c @@ -2148,12 +2148,13 @@ socket_poller (void *ctx) gf_log (this->name, GF_LOG_WARNING, "asynchronous socket_connect_finish failed"); } - ret = rpc_transport_notify (this->listener, - RPC_TRANSPORT_ACCEPT, this); - if (ret != 0) { - gf_log (this->name, GF_LOG_WARNING, - "asynchronous rpc_transport_notify failed"); - } + } + + ret = rpc_transport_notify (this->listener, + RPC_TRANSPORT_ACCEPT, this); + if (ret != 0) { + gf_log (this->name, GF_LOG_WARNING, + "asynchronous rpc_transport_notify failed"); } for (;;) { @@ -2232,7 +2233,7 @@ socket_poller (void *ctx) err: /* All (and only) I/O errors should come here. */ __socket_disconnect (this); - rpc_transport_notify (this, RPC_TRANSPORT_DISCONNECT, this); + rpc_transport_notify (this->listener, RPC_TRANSPORT_DISCONNECT, this); rpc_transport_unref (this); return NULL; } @@ -2632,6 +2633,7 @@ socket_connect (rpc_transport_t *this, int port) "could not create pipe"); } + this->listener = this; if (pthread_create(&priv->thread,NULL, socket_poller, this) != 0) { gf_log(this->name,GF_LOG_ERROR, diff --git a/tests/bugs/bug-873367.t b/tests/bugs/bug-873367.t new file mode 100755 index 00000000000..cfbbc98d0b2 --- /dev/null +++ b/tests/bugs/bug-873367.t @@ -0,0 +1,41 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc + +SSL_BASE=/etc/ssl +SSL_KEY=$SSL_BASE/glusterfs.key +SSL_CERT=$SSL_BASE/glusterfs.pem +SSL_CA=$SSL_BASE/glusterfs.ca + +cleanup; +rm -f $SSL_BASE/glusterfs.* +mkdir -p $B0/1 +mkdir -p $M0 + +TEST glusterd +TEST pidof glusterd +TEST $CLI volume info; + +TEST openssl genrsa -out $SSL_KEY 1024 +TEST openssl req -new -x509 -key $SSL_KEY -subj /CN=Anyone -out $SSL_CERT +ln $SSL_CERT $SSL_CA + +TEST $CLI volume create $V0 $H0:$B0/1 +TEST $CLI volume set $V0 server.ssl on +TEST $CLI volume set $V0 client.ssl on +TEST $CLI volume start $V0 + +TEST glusterfs --volfile-server=$H0 --volfile-id=$V0 $M0 +echo some_data > $M0/data_file +TEST umount $M0 + +# If the bug is not fixed, the next mount will fail. + +TEST glusterfs --volfile-server=$H0 --volfile-id=$V0 $M0 +EXPECT some_data cat $M0/data_file + +TEST umount $M0 +TEST $CLI volume stop $V0 +TEST $CLI volume delete $V0 + +cleanup; |