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 )
char *ptbuf[1];
sprintf(buf,
- "Bad vcp!! : "
+ "vcp does not exist!! : "
"LSNs[idx_session]=[%d],"
"lanas[idx_session]=[%d],"
"ncbp->ncb_lsn=[%d],"
}
/* 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");
uidp = smb_FindUID(vcp, ((smb_t *)inp)->uid, 0);
shareFound = smb_FindShare(vcp, uidp, shareName, &sharePath);
if (uidp)
for (i=0; i < nRegShares && cshare < nSharesRet; i++) {
len = sizeof(thisShare);
rv = RegEnumValue(hkSubmount, i, thisShare, &len, NULL, NULL, NULL, NULL);
- if (rv == ERROR_SUCCESS && strlen(thisShare) && (!allSubmount || stricmp(thisShare,"all"))) {
+ if (rv == ERROR_SUCCESS && strlen(thisShare) &&
+ (!allSubmount || (stricmp(thisShare,"all") && strcmp(thisShare,"*.")))) {
strncpy(shares[cshare].shi1_netname, thisShare, sizeof(shares->shi1_netname)-1);
shares[cshare].shi1_netname[sizeof(shares->shi1_netname)-1] = 0; /* unfortunate truncation */
shares[cshare].shi1_remark = cstrp - outp->datap;
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;