summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/libcli/wrepl/winsrepl.c17
-rw-r--r--source4/wrepl_server/wrepl_out_helpers.c2
2 files changed, 18 insertions, 1 deletions
diff --git a/source4/libcli/wrepl/winsrepl.c b/source4/libcli/wrepl/winsrepl.c
index 661a8613fe..5a5719f2c1 100644
--- a/source4/libcli/wrepl/winsrepl.c
+++ b/source4/libcli/wrepl/winsrepl.c
@@ -101,6 +101,23 @@ static void wrepl_socket_dead(struct wrepl_socket *wrepl_socket, NTSTATUS status
}
}
+bool wrepl_socket_is_connected(struct wrepl_socket *wrepl_sock)
+{
+ if (!wrepl_sock) {
+ return false;
+ }
+
+ if (wrepl_sock->dead) {
+ return false;
+ }
+
+ if (!wrepl_sock->sock) {
+ return false;
+ }
+
+ return true;
+}
+
static void wrepl_request_timeout_handler(struct tevent_context *ev, struct tevent_timer *te,
struct timeval t, void *ptr)
{
diff --git a/source4/wrepl_server/wrepl_out_helpers.c b/source4/wrepl_server/wrepl_out_helpers.c
index 19cabd1e12..1bd996d8c2 100644
--- a/source4/wrepl_server/wrepl_out_helpers.c
+++ b/source4/wrepl_server/wrepl_out_helpers.c
@@ -166,7 +166,7 @@ static struct composite_context *wreplsrv_out_connect_send(struct wreplsrv_partn
/* we have a connection already, so use it */
if (wreplconn) {
- if (!wreplconn->sock->dead) {
+ if (wrepl_socket_is_connected(wreplconn->sock)) {
state->stage = WREPLSRV_OUT_CONNECT_STAGE_DONE;
state->wreplconn= wreplconn;
composite_done(c);