osi_panic("afsd: invalid smb_vc_t detected in smb_allVCsp",
__FILE__, __LINE__);
- if (lsn == vcp->lsn && lana == vcp->lana) {
+ if (lsn == vcp->lsn && lana == vcp->lana &&
+ !(vcp->flags & SMB_VCFLAG_ALREADYDEAD)) {
smb_HoldVCNoLock(vcp);
break;
}
uidpNext = vcp->usersp;
}
- lock_ObtainMutex(&vcp->mx);
- vcp->flags &= ~SMB_VCFLAG_CLEAN_IN_PROGRESS;
- lock_ReleaseMutex(&vcp->mx);
-
/* The vcp is now on the deadVCsp list. We intentionally drop the
* reference so that the refcount can reach 0 and we can delete it */
smb_ReleaseVCNoLock(vcp);
* then we are in big trouble. This means either :
* a) we have the wrong NCB.
* b) Netbios screwed up the call.
+ * c) The VC was already marked dead before we were able to
+ * process the call
* Obviously this implies that
* ( LSNs[idx_session] != ncbp->ncb_lsn ||
* lanas[idx_session] != ncbp->ncb_lana_num )
ncbp->ncb_lana_num);
/* Also log in the trace log. */
- osi_Log4(smb_logp, "Server: BAD VCP!"
+ osi_Log4(smb_logp, "Server: VCP does not exist!"
"LSNs[idx_session]=[%d],"
"lanas[idx_session]=[%d],"
"ncbp->ncb_lsn=[%d],"
tidp = smb_FindTID(vcp, newTid, SMB_FLAG_CREATE);
if (!ipc) {
+ if (!strcmp(shareName, "*."))
+ strcpy(shareName, "all");
shareFound = smb_FindShare(vcp, uidp, shareName, &sharePath);
if (!shareFound) {
smb_ReleaseUID(uidp);
outp = smb_GetTran2ResponsePacket(vcp, p, op, totalParam, totalData);
- if(!stricmp(shareName,"all")) {
+ if(!stricmp(shareName,"all") || !strcmp(shareName,"*.")) {
rv = RegOpenKeyEx(HKEY_LOCAL_MACHINE, AFSREG_CLT_SVC_PARAM_SUBKEY, 0,
KEY_QUERY_VALUE, &hkParam);
if (rv == ERROR_SUCCESS) {
requestFileName[0] == '\\' &&
!_strnicmp(cm_NetbiosName,&requestFileName[1],nbnLen) &&
requestFileName[nbnLen+1] == '\\' &&
- !_strnicmp("all",&requestFileName[nbnLen+2],3))
+ (!_strnicmp("all",&requestFileName[nbnLen+2],3) ||
+ !_strnicmp("*.",&requestFileName[nbnLen+2],2)))
{
USHORT * sp;
struct smb_v2_referral * v2ref;