TODO s4:libcli/raw: don't schedule idle handlers on a dead connection
authorStefan Metzmacher <metze@samba.org>
Sun, 17 Feb 2013 21:39:40 +0000 (22:39 +0100)
committerStefan Metzmacher <metze@samba.org>
Tue, 4 Oct 2016 12:51:56 +0000 (14:51 +0200)
source4/libcli/raw/clitransport.c

index d0dd1f9dee6a987f9d545e7b7daf95f9902db948..f07b092eb8d42f2d0a111c7ffbcf20ac0999f3bf 100644 (file)
@@ -137,6 +137,14 @@ static void idle_handler(struct tevent_context *ev,
 
        transport->idle.func(transport, transport->idle.private_data);
 
+       if (transport->idle.func == NULL) {
+               return;
+       }
+
+       if (!smbXcli_conn_is_connected(transport->conn)) {
+               return;
+       }
+
        next = timeval_current_ofs_usec(transport->idle.period);
 
        transport->idle.te = tevent_add_timer(transport->ev,
@@ -156,6 +164,15 @@ _PUBLIC_ void smbcli_transport_idle_handler(struct smbcli_transport *transport,
                                   void *private_data)
 {
        TALLOC_FREE(transport->idle.te);
+       ZERO_STRUCT(transport->idle);
+
+       if (idle_func == NULL) {
+               return;
+       }
+
+       if (!smbXcli_conn_is_connected(transport->conn)) {
+               return;
+       }
 
        transport->idle.func = idle_func;
        transport->idle.private_data = private_data;