{
afsi_log("SERVICE_CONTROL_CUSTOM_DUMP");
GenerateMiniDump(NULL);
- dwRet = NO_ERROR;
+ dwRet = NO_ERROR;
}
break;
} /* end switch(ctrlCode) */
#endif
#ifdef _DEBUG
+ afsd_DbgBreakAllocInit();
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF /*| _CRTDBG_CHECK_ALWAYS_DF*/ |
_CRTDBG_CHECK_CRT_DF /* | _CRTDBG_DELAY_FREE_MEM_DF */ );
#endif
+ afsd_SetUnhandledExceptionFilter();
+
osi_InitPanic(afsd_notifier);
osi_InitTraceOption();
ts = 0;
tnc_begin = cm_data.nameHash[skey];
- for ( tvc = (cm_scache_t *) 0, tnc = tnc_begin, safety=0;
+ for ( tvc = (cm_scache_t *) NULL, tnc = tnc_begin, safety=0;
tnc; tnc = tnc->next, safety++ )
{
if (tnc->dirp == adp)
afs_uint32 dosTime) {
long code = 0;
cm_req_t req;
- cm_scache_t *dscp = fidp->NTopen_dscp;
- char *pathp = fidp->NTopen_pathp;
- cm_scache_t * scp = fidp->scp;
+ cm_scache_t *dscp = NULL;
+ char *pathp = NULL;
+ cm_scache_t * scp = NULL;
int deleted = 0;
int nullcreator = 0;
lock_ReleaseWrite(&smb_rctLock);
lock_ObtainMutex(&fidp->mx);
+ if (fidp->NTopen_dscp) {
+ dscp = fidp->NTopen_dscp;
+ cm_HoldSCache(dscp);
+ }
+
+ if (fidp->NTopen_pathp) {
+ pathp = strdup(fidp->NTopen_pathp);
+ }
+
+ if (fidp->scp) {
+ scp = fidp->scp;
+ cm_HoldSCache(scp);
+ }
+
/* Don't jump the gun on an async raw write */
while (fidp->raw_writers) {
lock_ReleaseMutex(&fidp->mx);
}
if (fidp->flags & SMB_FID_NTOPEN) {
+ cm_ReleaseSCache(fidp->NTopen_dscp);
fidp->NTopen_dscp = NULL;
+ free(fidp->NTopen_pathp);
fidp->NTopen_pathp = NULL;
fidp->flags &= ~SMB_FID_NTOPEN;
+ } else {
+ osi_assert(fidp->NTopen_dscp == NULL);
+ osi_assert(fidp->NTopen_pathp == NULL);
}
+
if (fidp->NTopen_wholepathp) {
- free(fidp->NTopen_wholepathp);
- fidp->NTopen_wholepathp = NULL;
+ free(fidp->NTopen_wholepathp);
+ fidp->NTopen_wholepathp = NULL;
+ }
+
+ if (fidp->scp) {
+ cm_ReleaseSCache(fidp->scp);
+ fidp->scp = NULL;
}
-
- fidp->scp = NULL;
lock_ReleaseMutex(&fidp->mx);
if (dscp)
/* save parent dir and pathname for delete or change notification */
if (fidflags & (SMB_FID_OPENDELETE | SMB_FID_OPENWRITE)) {
+ osi_Log2(afsd_logp,"smb_ReceiveNTCreateX fidp 0x%p dscp 0x%p", fidp, dscp);
fidp->flags |= SMB_FID_NTOPEN;
fidp->NTopen_dscp = dscp;
- osi_Log2(afsd_logp,"smb_ReceiveNTCreateX fidp 0x%p dscp 0x%p", fidp, dscp);
- cm_HoldSCache(dscp);
+ dscp = NULL;
fidp->NTopen_pathp = strdup(lastNamep);
}
fidp->NTopen_wholepathp = realPathp;
fidp->flags |= SMB_FID_NTOPEN;
fidp->NTopen_dscp = dscp;
osi_Log2(afsd_logp,"smb_ReceiveNTTranCreate fidp 0x%p dscp 0x%p", fidp, dscp);
- cm_HoldSCache(dscp);
+ dscp = NULL;
fidp->NTopen_pathp = strdup(lastNamep);
}
fidp->NTopen_wholepathp = realPathp;