s3:winbindd: correctly invalidate the cached connection
authorStefan Metzmacher <metze@samba.org>
Wed, 31 Mar 2010 18:54:18 +0000 (20:54 +0200)
committerStefan Metzmacher <metze@samba.org>
Thu, 1 Apr 2010 11:01:27 +0000 (13:01 +0200)
There're maybe additional TCP connection for ncacn_ip_tcp.

metze

source3/winbindd/winbindd_cm.c

index 1ddfdef89b1ef2ba777262741d5a1b6aa4e6037a..c2df24456886bc84bb0c8b5649c425c16a69c603 100644 (file)
@@ -1594,14 +1594,19 @@ void close_conns_after_fork(void)
        struct winbindd_domain *domain;
 
        for (domain = domain_list(); domain; domain = domain->next) {
-               if (domain->conn.cli == NULL)
-                       continue;
+               struct cli_state *cli = domain->conn.cli;
 
-               if (domain->conn.cli->fd == -1)
-                       continue;
+               /*
+                * first close the low level SMB TCP connection
+                * so that we don't generate any SMBclose
+                * requests in invalidate_cm_connection()
+                */
+               if (cli && cli->fd != -1) {
+                       close(domain->conn.cli->fd);
+                       domain->conn.cli->fd = -1;
+               }
 
-               close(domain->conn.cli->fd);
-               domain->conn.cli->fd = -1;
+               invalidate_cm_connection(&domain->conn);
        }
 }