Author: metze Date: 2006-03-23 11:13:19 +0000 (Thu, 23 Mar 2006) New Revision: 14672
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=14672 Log: the async_info desctructor needs access to the private struct, so free async info explicit... I hope to find a generic way later, so that the ntvfs modules doesn't need to take care that much... metze Modified: branches/SAMBA_4_0/source/ntvfs/cifs/vfs_cifs.c Changeset: Modified: branches/SAMBA_4_0/source/ntvfs/cifs/vfs_cifs.c =================================================================== --- branches/SAMBA_4_0/source/ntvfs/cifs/vfs_cifs.c 2006-03-23 00:57:27 UTC (rev 14671) +++ branches/SAMBA_4_0/source/ntvfs/cifs/vfs_cifs.c 2006-03-23 11:13:19 UTC (rev 14672) @@ -184,7 +184,15 @@ static NTSTATUS cvfs_disconnect(struct ntvfs_module_context *ntvfs) { struct cvfs_private *private = ntvfs->private_data; + struct async_info *a, *an; + /* first cleanup pending requests */ + for (a=private->pending; a; a = an) { + an = a->next; + smbcli_request_destroy(a->c_req); + talloc_free(a); + } + talloc_free(private); ntvfs->private_data = NULL; @@ -211,6 +219,7 @@ struct async_info *async = c_req->async.private; struct ntvfs_request *req = async->req; req->async_states->status = smbcli_request_simple_recv(c_req); + talloc_free(async); req->async_states->send_fn(req); } @@ -268,6 +277,7 @@ struct async_info *async = c_req->async.private; struct ntvfs_request *req = async->req; req->async_states->status = smb_raw_ioctl_recv(c_req, req, async->parms); + talloc_free(async); req->async_states->send_fn(req); } @@ -321,6 +331,7 @@ struct async_info *async = c_req->async.private; struct ntvfs_request *req = async->req; req->async_states->status = smb_raw_pathinfo_recv(c_req, req, async->parms); + talloc_free(async); req->async_states->send_fn(req); } @@ -352,6 +363,7 @@ struct async_info *async = c_req->async.private; struct ntvfs_request *req = async->req; req->async_states->status = smb_raw_fileinfo_recv(c_req, req, async->parms); + talloc_free(async); req->async_states->send_fn(req); } @@ -405,6 +417,7 @@ struct async_info *async = c_req->async.private; struct ntvfs_request *req = async->req; req->async_states->status = smb_raw_open_recv(c_req, req, async->parms); + talloc_free(async); req->async_states->send_fn(req); } @@ -509,6 +522,7 @@ struct async_info *async = c_req->async.private; struct ntvfs_request *req = async->req; req->async_states->status = smb_raw_read_recv(c_req, async->parms); + talloc_free(async); req->async_states->send_fn(req); } @@ -545,6 +559,7 @@ struct async_info *async = c_req->async.private; struct ntvfs_request *req = async->req; req->async_states->status = smb_raw_write_recv(c_req, async->parms); + talloc_free(async); req->async_states->send_fn(req); } @@ -581,6 +596,7 @@ struct async_info *async = c_req->async.private; struct ntvfs_request *req = async->req; req->async_states->status = smb_raw_seek_recv(c_req, async->parms); + talloc_free(async); req->async_states->send_fn(req); } @@ -767,6 +783,7 @@ struct async_info *async = c_req->async.private; struct ntvfs_request *req = async->req; req->async_states->status = smb_raw_fsinfo_recv(c_req, req, async->parms); + talloc_free(async); req->async_states->send_fn(req); } @@ -846,6 +863,7 @@ struct async_info *async = c_req->async.private; struct ntvfs_request *req = async->req; req->async_states->status = smb_raw_trans2_recv(c_req, req, async->parms); + talloc_free(async); req->async_states->send_fn(req); } @@ -885,6 +903,7 @@ struct async_info *async = c_req->async.private; struct ntvfs_request *req = async->req; req->async_states->status = smb_raw_changenotify_recv(c_req, req, async->parms); + talloc_free(async); req->async_states->send_fn(req); }