Index: openafs/src/WINNT/afsadmsvr/NTMakefile
diff -c openafs/src/WINNT/afsadmsvr/NTMakefile:1.8.4.1 openafs/src/WINNT/afsadmsvr/NTMakefile:1.8.4.2
*** openafs/src/WINNT/afsadmsvr/NTMakefile:1.8.4.1 Wed Sep 19 13:58:45 2007
--- openafs/src/WINNT/afsadmsvr/NTMakefile Tue Feb 12 08:32:48 2008
***************
*** 76,82 ****
VCLIBS =\
gdi32.lib \
user32.lib \
! rpcns4.lib \
rpcrt4.lib \
comctl32.lib \
gdi32.lib
--- 76,82 ----
VCLIBS =\
gdi32.lib \
user32.lib \
! # rpcns4.lib \
rpcrt4.lib \
comctl32.lib \
gdi32.lib
Index: openafs/src/WINNT/afsadmsvr/TaAfsAdmSvrClientBind.cpp
diff -c openafs/src/WINNT/afsadmsvr/TaAfsAdmSvrClientBind.cpp:1.3 openafs/src/WINNT/afsadmsvr/TaAfsAdmSvrClientBind.cpp:1.3.4.1
*** openafs/src/WINNT/afsadmsvr/TaAfsAdmSvrClientBind.cpp:1.3 Sat Nov 5 01:47:40 2005
--- openafs/src/WINNT/afsadmsvr/TaAfsAdmSvrClientBind.cpp Tue Feb 12 08:32:49 2008
***************
*** 52,57 ****
--- 52,58 ----
for (DWORD dwTickStart = GetTickCount(); ; )
{
+ #ifdef notdef
// First we'll enumerate the name services around here to see if
// an admin server is already running.
//
***************
*** 69,75 ****
else if (status != RPC_S_CALL_FAILED_DNE) // server rejected us!
break;
}
!
// Failing that, we'll try to bind to the well-known endpoint that the
// admin server may have had to use. (if RpcNsBindingExport failed.)
//
--- 70,76 ----
else if (status != RPC_S_CALL_FAILED_DNE) // server rejected us!
break;
}
! #endif
// Failing that, we'll try to bind to the well-known endpoint that the
// admin server may have had to use. (if RpcNsBindingExport failed.)
//
Index: openafs/src/WINNT/afsadmsvr/TaAfsAdmSvrMain.cpp
diff -c openafs/src/WINNT/afsadmsvr/TaAfsAdmSvrMain.cpp:1.5 openafs/src/WINNT/afsadmsvr/TaAfsAdmSvrMain.cpp:1.5.4.1
*** openafs/src/WINNT/afsadmsvr/TaAfsAdmSvrMain.cpp:1.5 Sat Nov 5 01:47:40 2005
--- openafs/src/WINNT/afsadmsvr/TaAfsAdmSvrMain.cpp Tue Feb 12 08:32:49 2008
***************
*** 80,86 ****
--- 80,88 ----
// Clean up any broken interface registration
//
RpcServerUnregisterIf (ITaAfsAdminSvr_v1_0_s_ifspec, 0, FALSE);
+ #ifdef notdef
RpcNsBindingUnexport (RPC_C_NS_SYNTAX_DEFAULT, pszENTRYNAME, ITaAfsAdminSvr_v1_0_s_ifspec, NULL);
+ #endif
// Register our interface
//
***************
*** 118,127 ****
--- 120,131 ----
{
BOOL fExportedBinding = FALSE;
+ #ifdef notdef
if ((status = RpcNsBindingExport (RPC_C_NS_SYNTAX_DEFAULT, pszENTRYNAME, ITaAfsAdminSvr_v1_0_s_ifspec, pBindingVector, NULL)) == 0)
fExportedBinding = TRUE;
else
Print (dlWARNING, TEXT("RpcNsBindingExport failed (benign); error 0x%08lX"), status);
+ #endif
if (!fExportedBinding && !fGotPort)
{
***************
*** 157,162 ****
--- 161,167 ----
AfsAdmSvr_Shutdown();
}
+ #ifdef notdef
if (fExportedBinding)
{
if ((status = RpcNsBindingUnexport (RPC_C_NS_SYNTAX_DEFAULT, pszENTRYNAME, ITaAfsAdminSvr_v1_0_s_ifspec, NULL)) != 0)
***************
*** 164,170 ****
Print (dlWARNING, TEXT("RpcNsBindingExport failed; error 0x%08lX"), status);
}
}
!
if ((status = RpcEpUnregister (ITaAfsAdminSvr_v1_0_s_ifspec, pBindingVector, NULL)) != 0)
{
Print (dlWARNING, TEXT("RpcEpUnregister failed; error 0x%08lX"), status);
--- 169,175 ----
Print (dlWARNING, TEXT("RpcNsBindingExport failed; error 0x%08lX"), status);
}
}
! #endif
if ((status = RpcEpUnregister (ITaAfsAdminSvr_v1_0_s_ifspec, pBindingVector, NULL)) != 0)
{
Print (dlWARNING, TEXT("RpcEpUnregister failed; error 0x%08lX"), status);
Index: openafs/src/WINNT/afsapplib/NTMakefile
diff -c openafs/src/WINNT/afsapplib/NTMakefile:1.12 openafs/src/WINNT/afsapplib/NTMakefile:1.12.4.1
*** openafs/src/WINNT/afsapplib/NTMakefile:1.12 Sun Nov 20 20:56:03 2005
--- openafs/src/WINNT/afsapplib/NTMakefile Tue Feb 12 08:32:50 2008
***************
*** 76,82 ****
VCLIBS =\
comctl32.lib \
rpcrt4.lib \
! rpcns4.lib \
DLLLIBS = \
$(DESTDIR)\lib\afs\TaAfsAdmSvrClient.lib \
--- 76,82 ----
VCLIBS =\
comctl32.lib \
rpcrt4.lib \
! # rpcns4.lib \
DLLLIBS = \
$(DESTDIR)\lib\afs\TaAfsAdmSvrClient.lib \
Index: openafs/src/WINNT/afsd/afsd_init.c
diff -c openafs/src/WINNT/afsd/afsd_init.c:1.79.2.27 openafs/src/WINNT/afsd/afsd_init.c:1.79.2.28
*** openafs/src/WINNT/afsd/afsd_init.c:1.79.2.27 Fri Feb 1 16:39:40 2008
--- openafs/src/WINNT/afsd/afsd_init.c Thu Feb 14 22:26:35 2008
***************
*** 1016,1021 ****
--- 1016,1030 ----
if (rx_nojumbo)
afsi_log("RX Jumbograms are disabled");
+ dummyLen = sizeof(rx_extraPackets);
+ code = RegQueryValueEx(parmKey, "RxExtraPackets", NULL, NULL,
+ (BYTE *) &rx_extraPackets, &dummyLen);
+ if (code != ERROR_SUCCESS) {
+ rx_extraPackets = 120;
+ }
+ if (rx_extraPackets)
+ afsi_log("RX extraPackets is %d", rx_extraPackets);
+
dummyLen = sizeof(rx_mtu);
code = RegQueryValueEx(parmKey, "RxMaxMTU", NULL, NULL,
(BYTE *) &rx_mtu, &dummyLen);
Index: openafs/src/WINNT/afsd/afskfw.c
diff -c openafs/src/WINNT/afsd/afskfw.c:1.28.4.15 openafs/src/WINNT/afsd/afskfw.c:1.28.4.16
*** openafs/src/WINNT/afsd/afskfw.c:1.28.4.15 Fri Feb 8 21:32:19 2008
--- openafs/src/WINNT/afsd/afskfw.c Mon Feb 18 09:17:11 2008
***************
*** 1,5 ****
/*
! * Copyright (c) 2004, 2005, 2006, 2007 Secure Endpoints Inc.
* Copyright (c) 2003 SkyRope, LLC
* All rights reserved.
*
--- 1,5 ----
/*
! * Copyright (c) 2004, 2005, 2006, 2007, 2008 Secure Endpoints Inc.
* Copyright (c) 2003 SkyRope, LLC
* All rights reserved.
*
***************
*** 686,691 ****
--- 686,692 ----
char * pname = NULL;
const char * ccname = NULL;
const char * cctype = NULL;
+ char * ccfullname = NULL;
krb5_error_code code = 0;
krb5_error_code cc_code = 0;
krb5_cc_cursor cur;
***************
*** 708,717 ****
cctype = pkrb5_cc_get_type(ctx, cc);
if (!cctype) goto cleanup;
// Search the existing list to see if we have a match
if ( next ) {
for ( ; next ; next = next->next ) {
! if ( !strcmp(next->principal,pname) && !strcmp(next->ccache_name, ccname) )
break;
}
}
--- 709,723 ----
cctype = pkrb5_cc_get_type(ctx, cc);
if (!cctype) goto cleanup;
+ ccfullname = malloc(strlen(ccname) + strlen(cctype) + 2);
+ if (!ccfullname) goto cleanup;
+
+ sprintf(ccfullname, "%s:%s", cctype, ccname);
+
// Search the existing list to see if we have a match
if ( next ) {
for ( ; next ; next = next->next ) {
! if ( !strcmp(next->principal,pname) && !strcmp(next->ccache_name, ccfullname) )
break;
}
}
***************
*** 722,730 ****
next->next = princ_cc_data;
princ_cc_data = next;
next->principal = _strdup(pname);
! next->ccache_name = malloc(strlen(ccname) + strlen(cctype) + 2);
! if (next->ccache_name)
! sprintf(next->ccache_name, "%s:%s", cctype, ccname);
next->from_lsa = lsa;
next->expired = 1;
next->expiration_time = 0;
--- 728,735 ----
next->next = princ_cc_data;
princ_cc_data = next;
next->principal = _strdup(pname);
! next->ccache_name = ccfullname;
! ccfullname = NULL;
next->from_lsa = lsa;
next->expired = 1;
next->expiration_time = 0;
***************
*** 783,788 ****
--- 788,795 ----
flags = KRB5_TC_OPENCLOSE; //turn on OPENCLOSE
code = pkrb5_cc_set_flags(ctx, cc, flags);
+ if ( ccfullname)
+ free(ccfullname);
if ( pname )
pkrb5_free_unparsed_name(ctx,pname);
if ( principal )
Index: openafs/src/WINNT/afsd/cm_cell.c
diff -c openafs/src/WINNT/afsd/cm_cell.c:1.23.2.12 openafs/src/WINNT/afsd/cm_cell.c:1.23.2.13
*** openafs/src/WINNT/afsd/cm_cell.c:1.23.2.12 Fri Feb 1 16:39:41 2008
--- openafs/src/WINNT/afsd/cm_cell.c Thu Feb 14 22:31:36 2008
***************
*** 71,77 ****
* and check to make sure we have a valid set of volume servers
* this function must be called with a Write Lock on cm_cellLock
*/
! static cm_cell_t *cm_UpdateCell(cm_cell_t * cp, afs_uint32 flags)
{
long code = 0;
cm_cell_rock_t rock;
--- 71,77 ----
* and check to make sure we have a valid set of volume servers
* this function must be called with a Write Lock on cm_cellLock
*/
! cm_cell_t *cm_UpdateCell(cm_cell_t * cp, afs_uint32 flags)
{
long code = 0;
cm_cell_rock_t rock;
***************
*** 405,410 ****
--- 405,411 ----
for (cellp = cm_data.allCellsp; cellp; cellp=cellp->allNextp) {
lock_InitializeMutex(&cellp->mx, "cm_cell_t mutex");
cellp->vlServersp = NULL;
+ cellp->flags |= CM_CELLFLAG_VLSERVER_INVALID;
}
}
Index: openafs/src/WINNT/afsd/cm_cell.h
diff -c openafs/src/WINNT/afsd/cm_cell.h:1.7.6.7 openafs/src/WINNT/afsd/cm_cell.h:1.7.6.8
*** openafs/src/WINNT/afsd/cm_cell.h:1.7.6.7 Thu Jan 31 00:49:00 2008
--- openafs/src/WINNT/afsd/cm_cell.h Thu Feb 14 22:31:36 2008
***************
*** 72,75 ****
--- 72,77 ----
extern long cm_AddCellProc(void *rockp, struct sockaddr_in *addrp, char *namep);
+ extern cm_cell_t *cm_UpdateCell(cm_cell_t * cp, afs_uint32 flags);
+
#endif /* __CELL_H_ENV_ */
Index: openafs/src/WINNT/afsd/cm_conn.c
diff -c openafs/src/WINNT/afsd/cm_conn.c:1.49.2.30 openafs/src/WINNT/afsd/cm_conn.c:1.49.2.34
*** openafs/src/WINNT/afsd/cm_conn.c:1.49.2.30 Thu Feb 7 09:48:53 2008
--- openafs/src/WINNT/afsd/cm_conn.c Mon Feb 18 12:34:51 2008
***************
*** 291,297 ****
else if (fidp->volume == volp->bk.ID)
statep = &volp->bk;
! if (statep->state != vl_offline) {
retry = 1;
} else {
if (cm_CheckOfflineVolume(volp, statep->ID))
--- 291,297 ----
else if (fidp->volume == volp->bk.ID)
statep = &volp->bk;
! if (statep->state != vl_offline && statep->state != vl_unknown) {
retry = 1;
} else {
if (cm_CheckOfflineVolume(volp, statep->ID))
***************
*** 323,329 ****
else if (fidp->volume == volp->bk.ID)
statep = &volp->bk;
! if (statep->state != vl_offline && statep->state != vl_busy) {
retry = 1;
} else {
if (!serversp) {
--- 323,331 ----
else if (fidp->volume == volp->bk.ID)
statep = &volp->bk;
! if (statep->state != vl_offline &&
! statep->state != vl_busy &&
! statep->state != vl_unknown) {
retry = 1;
} else {
if (!serversp) {
***************
*** 457,473 ****
break;
}
! /* Log server being offline for this volume */
! sprintf(addr, "%d.%d.%d.%d",
! ((serverp->addr.sin_addr.s_addr & 0xff)),
! ((serverp->addr.sin_addr.s_addr & 0xff00)>> 8),
! ((serverp->addr.sin_addr.s_addr & 0xff0000)>> 16),
! ((serverp->addr.sin_addr.s_addr & 0xff000000)>> 24));
! osi_Log2(afsd_logp, format, osi_LogSaveString(afsd_logp,addr), fidp->volume);
#ifndef DJGPP
! LogEvent(EVENTLOG_WARNING_TYPE, msgID, addr, fidp->volume);
#endif
/* Mark server offline for this volume */
if (!serversp && fidp) {
--- 459,477 ----
break;
}
! if (serverp && fidp) {
! /* Log server being offline for this volume */
! sprintf(addr, "%d.%d.%d.%d",
! ((serverp->addr.sin_addr.s_addr & 0xff)),
! ((serverp->addr.sin_addr.s_addr & 0xff00)>> 8),
! ((serverp->addr.sin_addr.s_addr & 0xff0000)>> 16),
! ((serverp->addr.sin_addr.s_addr & 0xff000000)>> 24));
! osi_Log2(afsd_logp, format, osi_LogSaveString(afsd_logp,addr), fidp->volume);
#ifndef DJGPP
! LogEvent(EVENTLOG_WARNING_TYPE, msgID, addr, fidp->volume);
#endif
+ }
/* Mark server offline for this volume */
if (!serversp && fidp) {
***************
*** 477,482 ****
--- 481,487 ----
free_svr_list = 1;
}
}
+
lock_ObtainWrite(&cm_serverLock);
for (tsrp = serversp; tsrp; tsrp=tsrp->next) {
if (tsrp->server == serverp) {
***************
*** 536,541 ****
--- 541,547 ----
lock_ObtainWrite(&cm_scacheLock);
cm_RemoveSCacheFromHashTable(scp);
lock_ReleaseWrite(&cm_scacheLock);
+ cm_LockMarkSCacheLost(scp);
scp->flags |= CM_SCACHEFLAG_DELETED;
lock_ReleaseMutex(&scp->mx);
cm_ReleaseSCache(scp);
***************
*** 594,600 ****
if ( timeLeft > 2 )
retry = 1;
}
! else if (errorCode == RXKADEXPIRED || errorCode == RXKADBADTICKET) {
if (!dead_session) {
lock_ObtainMutex(&userp->mx);
ucellp = cm_GetUCell(userp, serverp->cellp);
--- 600,606 ----
if ( timeLeft > 2 )
retry = 1;
}
! else if (errorCode == RXKADEXPIRED) {
if (!dead_session) {
lock_ObtainMutex(&userp->mx);
ucellp = cm_GetUCell(userp, serverp->cellp);
Index: openafs/src/WINNT/afsd/cm_dcache.c
diff -c openafs/src/WINNT/afsd/cm_dcache.c:1.30.2.24 openafs/src/WINNT/afsd/cm_dcache.c:1.30.2.25
*** openafs/src/WINNT/afsd/cm_dcache.c:1.30.2.24 Mon Jan 7 12:56:37 2008
--- openafs/src/WINNT/afsd/cm_dcache.c Sun Feb 17 00:28:04 2008
***************
*** 696,702 ****
--- 696,705 ----
lock_ReleaseMutex(&scp->mx);
mxheld = 0;
}
+
+ lock_ObtainRead(&scp->bufCreateLock);
code = buf_Get(scp, &offset, &bp);
+ lock_ReleaseRead(&scp->bufCreateLock);
if (code)
break;
***************
*** 1089,1095 ****
--- 1092,1100 ----
if (LargeIntegerGreaterThanOrEqualTo(pageBase, fileSize))
break;
+ lock_ObtainRead(&scp->bufCreateLock);
code = buf_Get(scp, &pageBase, &tbp);
+ lock_ReleaseRead(&scp->bufCreateLock);
if (code) {
//lock_ReleaseMutex(&cm_bufGetMutex);
lock_ObtainMutex(&scp->mx);
Index: openafs/src/WINNT/afsd/cm_dir.c
diff -c openafs/src/WINNT/afsd/cm_dir.c:1.4.4.9 openafs/src/WINNT/afsd/cm_dir.c:1.4.4.10
*** openafs/src/WINNT/afsd/cm_dir.c:1.4.4.9 Wed Nov 14 12:19:41 2007
--- openafs/src/WINNT/afsd/cm_dir.c Mon Feb 18 23:15:03 2008
***************
*** 127,135 ****
{
long i;
! i = (long)strlen(namep) + 1;
if (lenp) *lenp = i;
! return 1 + ((i+15) >> 5);
}
/* Create an entry in a file. Dir is a file representation, while
--- 127,135 ----
{
long i;
! i = (long)strlen(namep);
if (lenp) *lenp = i;
! return 1 + ((i+16) >> 5);
}
/* Create an entry in a file. Dir is a file representation, while
Index: openafs/src/WINNT/afsd/cm_scache.c
diff -c openafs/src/WINNT/afsd/cm_scache.c:1.35.2.56 openafs/src/WINNT/afsd/cm_scache.c:1.35.2.58
*** openafs/src/WINNT/afsd/cm_scache.c:1.35.2.56 Thu Feb 7 20:21:46 2008
--- openafs/src/WINNT/afsd/cm_scache.c Sun Feb 17 00:28:04 2008
***************
*** 640,647 ****
long code;
cm_volume_t *volp = NULL;
cm_cell_t *cellp;
! int special; // yj: boolean variable to test if file is on root.afs
! int isRoot;
extern cm_fid_t cm_rootFid;
hash = CM_SCACHE_HASH(fidp);
--- 640,647 ----
long code;
cm_volume_t *volp = NULL;
cm_cell_t *cellp;
! int special = 0; // yj: boolean variable to test if file is on root.afs
! int isRoot = 0;
extern cm_fid_t cm_rootFid;
hash = CM_SCACHE_HASH(fidp);
***************
*** 1659,1689 ****
for (bp = cm_data.buf_fileHashTablepp[i]; bp; bp=nextBp)
{
nextBp = bp->fileHashp;
! if (cm_FidCmp(&scp->fid, &bp->fid) == 0) {
! prevBp = bp->fileHashBackp;
! bp->fileHashBackp = bp->fileHashp = NULL;
! if (prevBp)
! prevBp->fileHashp = nextBp;
! else
! cm_data.buf_fileHashTablepp[i] = nextBp;
! if (nextBp)
! nextBp->fileHashBackp = prevBp;
!
! j = BUF_HASH(&bp->fid, &bp->offset);
! lbpp = &(cm_data.buf_scacheHashTablepp[j]);
! for(tbp = *lbpp; tbp; lbpp = &tbp->hashp, tbp = *lbpp) {
! if (tbp == bp)
! break;
! }
!
! *lbpp = bp->hashp; /* hash out */
! bp->hashp = NULL;
! bp->flags &= ~CM_BUF_INHASH;
}
}
-
lock_ReleaseWrite(&buf_globalLock);
}
scp->dataVersion = dataVersion;
--- 1659,1699 ----
for (bp = cm_data.buf_fileHashTablepp[i]; bp; bp=nextBp)
{
nextBp = bp->fileHashp;
+ /*
+ * if the buffer belongs to this stat cache entry
+ * and the buffer mutex can be obtained, check the
+ * reference count and if it is zero, remove the buffer
+ * from the hash tables. If there are references,
+ * the buffer might be updated to the current version
+ * so leave it in place.
+ */
+ if (cm_FidCmp(&scp->fid, &bp->fid) == 0 &&
+ lock_TryMutex(&bp->mx)) {
+ if (bp->refCount == 0) {
+ prevBp = bp->fileHashBackp;
+ bp->fileHashBackp = bp->fileHashp = NULL;
+ if (prevBp)
+ prevBp->fileHashp = nextBp;
+ else
+ cm_data.buf_fileHashTablepp[i] = nextBp;
+ if (nextBp)
+ nextBp->fileHashBackp = prevBp;
+
+ j = BUF_HASH(&bp->fid, &bp->offset);
+ lbpp = &(cm_data.buf_scacheHashTablepp[j]);
+ for(tbp = *lbpp; tbp; lbpp = &tbp->hashp, tbp = *lbpp) {
+ if (tbp == bp)
+ break;
+ }
! *lbpp = bp->hashp; /* hash out */
! bp->hashp = NULL;
! bp->flags &= ~CM_BUF_INHASH;
! }
! lock_ReleaseMutex(&bp->mx);
}
}
lock_ReleaseWrite(&buf_globalLock);
}
scp->dataVersion = dataVersion;
Index: openafs/src/WINNT/afsd/cm_vnodeops.c
diff -c openafs/src/WINNT/afsd/cm_vnodeops.c:1.69.2.56 openafs/src/WINNT/afsd/cm_vnodeops.c:1.69.2.60
*** openafs/src/WINNT/afsd/cm_vnodeops.c:1.69.2.56 Sun Feb 10 19:18:32 2008
--- openafs/src/WINNT/afsd/cm_vnodeops.c Sun Feb 17 00:59:30 2008
***************
*** 1284,1291 ****
else
return CM_ERROR_NOSUCHFILE;
}
! else if (!strchr(namep, '#') && !strchr(namep, '%') &&
! strcmp(namep, "srvsvc") && strcmp(namep, "wkssvc")) {
/* nonexistent dir on freelance root, so add it */
char fullname[200] = ".";
int found = 0;
--- 1284,1292 ----
else
return CM_ERROR_NOSUCHFILE;
}
! else if (!strchr(namep, '#') && !strchr(namep, '%') &&
! strcmp(namep, "srvsvc") && strcmp(namep, "wkssvc") &&
! strcmp(namep, "ipc$")) {
/* nonexistent dir on freelance root, so add it */
char fullname[200] = ".";
int found = 0;
***************
*** 1300,1305 ****
--- 1301,1307 ----
* new value automatically.
*/
+ code = -1;
if (namep[0] == '.') {
if (cm_GetCell_Gen(&namep[1], &fullname[1], CM_FLAG_CREATE)) {
found = 1;
***************
*** 1698,1704 ****
--- 1700,1708 ----
/* read the link data */
lock_ReleaseMutex(&linkScp->mx);
thyper.LowPart = thyper.HighPart = 0;
+ lock_ObtainRead(&linkScp->bufCreateLock);
code = buf_Get(linkScp, &thyper, &bufp);
+ lock_ReleaseRead(&linkScp->bufCreateLock);
lock_ObtainMutex(&linkScp->mx);
if (code)
return code;
***************
*** 2689,2694 ****
--- 2693,2708 ----
return CM_ERROR_ATSYS;
}
+ #ifdef AFS_FREELANCE_CLIENT
+ /* Freelance root volume does not hold files */
+ if (cm_freelanceEnabled &&
+ dscp->fid.cell==AFS_FAKE_ROOT_CELL_ID &&
+ dscp->fid.volume==AFS_FAKE_ROOT_VOL_ID )
+ {
+ return CM_ERROR_NOACCESS;
+ }
+ #endif /* AFS_FREELANCE_CLIENT */
+
/* before starting the RPC, mark that we're changing the file data, so
* that someone who does a chmod will know to wait until our call
* completes.
***************
*** 2839,2844 ****
--- 2853,2868 ----
return CM_ERROR_ATSYS;
}
+ #ifdef AFS_FREELANCE_CLIENT
+ /* Freelance root volume does not hold subdirectories */
+ if (cm_freelanceEnabled &&
+ dscp->fid.cell==AFS_FAKE_ROOT_CELL_ID &&
+ dscp->fid.volume==AFS_FAKE_ROOT_VOL_ID )
+ {
+ return CM_ERROR_NOACCESS;
+ }
+ #endif /* AFS_FREELANCE_CLIENT */
+
/* before starting the RPC, mark that we're changing the directory
* data, so that someone who does a chmod on the dir will wait until
* our call completes.
***************
*** 3935,3943 ****
#endif
}
- /* Forward dcl. */
- static void cm_LockMarkSCacheLost(cm_scache_t * scp);
-
/* Called with cm_scacheLock write locked */
static cm_file_lock_t * cm_GetFileLock(void) {
cm_file_lock_t * l;
--- 3959,3964 ----
***************
*** 4883,4889 ****
}
/* called with scp->mx held */
! static void cm_LockMarkSCacheLost(cm_scache_t * scp)
{
cm_file_lock_t *fileLock;
osi_queue_t *q;
--- 4904,4910 ----
}
/* called with scp->mx held */
! void cm_LockMarkSCacheLost(cm_scache_t * scp)
{
cm_file_lock_t *fileLock;
osi_queue_t *q;
***************
*** 5007,5013 ****
if (!IS_LOCK_ACTIVE(fileLock))
goto pre_syncopdone;
! if (scp->serverLock != -1) {
cm_fid_t cfid;
cm_user_t * userp;
--- 5028,5034 ----
if (!IS_LOCK_ACTIVE(fileLock))
goto pre_syncopdone;
! if (scp->serverLock != -1 && !(scp->flags & CM_SCACHEFLAG_DELETED)) {
cm_fid_t cfid;
cm_user_t * userp;
***************
*** 5084,5090 ****
}
}
! if (code == EINVAL || code == CM_ERROR_INVAL) {
cm_LockMarkSCacheLost(scp);
}
--- 5105,5112 ----
}
}
! if (code == EINVAL || code == CM_ERROR_INVAL ||
! code == CM_ERROR_BADFD) {
cm_LockMarkSCacheLost(scp);
}
Index: openafs/src/WINNT/afsd/cm_vnodeops.h
diff -c openafs/src/WINNT/afsd/cm_vnodeops.h:1.14.4.7 openafs/src/WINNT/afsd/cm_vnodeops.h:1.14.4.8
*** openafs/src/WINNT/afsd/cm_vnodeops.h:1.14.4.7 Sat Dec 22 23:52:58 2007
--- openafs/src/WINNT/afsd/cm_vnodeops.h Sun Feb 17 00:59:30 2008
***************
*** 224,229 ****
--- 224,231 ----
extern void cm_ReleaseAllLocks(void);
+ extern void cm_LockMarkSCacheLost(cm_scache_t * scp);
+
extern long cm_RetryLock(cm_file_lock_t *oldFileLock, int client_is_dead);
#define CM_SESSION_SMB 0xffff
Index: openafs/src/WINNT/afsd/cm_volume.c
diff -c openafs/src/WINNT/afsd/cm_volume.c:1.14.4.27 openafs/src/WINNT/afsd/cm_volume.c:1.14.4.29
*** openafs/src/WINNT/afsd/cm_volume.c:1.14.4.27 Thu Feb 7 01:14:59 2008
--- openafs/src/WINNT/afsd/cm_volume.c Thu Feb 14 22:31:36 2008
***************
*** 213,218 ****
--- 213,221 ----
} else
#endif
{
+ if (cellp->flags & CM_CELLFLAG_VLSERVER_INVALID)
+ cm_UpdateCell(cellp, 0);
+
/* now we have volume structure locked and held; make RPC to fill it */
osi_Log2(afsd_logp, "CALL VL_GetEntryByName{UNO} name %s:%s", volp->cellp->name, volp->namep);
do {
***************
*** 1013,1020 ****
lock_ObtainMutex(&volp->mx);
if (volp->rw.ID != 0 && (!volID || volID == volp->rw.ID) &&
! (volp->rw.state == vl_busy || volp->rw.state == vl_offline)) {
cm_InitReq(&req);
for (serversp = volp->rw.serversp; serversp; serversp = serversp->next) {
--- 1016,1031 ----
lock_ObtainMutex(&volp->mx);
+ if (volp->flags & CM_VOLUMEFLAG_RESET) {
+ cm_InitReq(&req);
+ code = cm_UpdateVolume(volp->cellp, cm_rootUserp, &req, volp);
+ if (code == 0)
+ volp->flags &= ~CM_VOLUMEFLAG_RESET;
+ }
+
if (volp->rw.ID != 0 && (!volID || volID == volp->rw.ID) &&
! volp->rw.serversp &&
! (volp->rw.state == vl_busy || volp->rw.state == vl_offline || volp->rw.state == vl_unknown)) {
cm_InitReq(&req);
for (serversp = volp->rw.serversp; serversp; serversp = serversp->next) {
***************
*** 1049,1055 ****
}
if (volp->ro.ID != 0 && (!volID || volID == volp->ro.ID) &&
! (volp->ro.state == vl_busy || volp->ro.state == vl_offline)) {
cm_InitReq(&req);
for (serversp = volp->ro.serversp; serversp; serversp = serversp->next) {
--- 1060,1067 ----
}
if (volp->ro.ID != 0 && (!volID || volID == volp->ro.ID) &&
! volp->ro.serversp &&
! (volp->ro.state == vl_busy || volp->ro.state == vl_offline || volp->ro.state == vl_unknown)) {
cm_InitReq(&req);
for (serversp = volp->ro.serversp; serversp; serversp = serversp->next) {
***************
*** 1084,1090 ****
}
if (volp->bk.ID != 0 && (!volID || volID == volp->bk.ID) &&
! (volp->bk.state == vl_busy || volp->bk.state == vl_offline)) {
cm_InitReq(&req);
for (serversp = volp->bk.serversp; serversp; serversp = serversp->next) {
--- 1096,1103 ----
}
if (volp->bk.ID != 0 && (!volID || volID == volp->bk.ID) &&
! volp->bk.serversp &&
! (volp->bk.state == vl_busy || volp->bk.state == vl_offline || volp->bk.state == vl_unknown)) {
cm_InitReq(&req);
for (serversp = volp->bk.serversp; serversp; serversp = serversp->next) {
Index: openafs/src/WINNT/afsd/smb.c
diff -c openafs/src/WINNT/afsd/smb.c:1.118.2.58 openafs/src/WINNT/afsd/smb.c:1.118.2.60
*** openafs/src/WINNT/afsd/smb.c:1.118.2.58 Fri Feb 8 21:32:19 2008
--- openafs/src/WINNT/afsd/smb.c Mon Feb 18 12:34:51 2008
***************
*** 1808,1813 ****
--- 1808,1815 ----
}
if (_stricmp(shareName, "IPC$") == 0 ||
+ _stricmp(shareName, "srvsvc") == 0 ||
+ _stricmp(shareName, "wkssvc") == 0 ||
_stricmp(shareName, SMB_IOCTL_FILENAME_NOSLASH) == 0 ||
_stricmp(shareName, "DESKTOP.INI") == 0
) {
***************
*** 2880,2887 ****
else if (code == CM_ERROR_ALLOFFLINE || code == CM_ERROR_ALLDOWN) {
NTStatus = 0xC00000BEL; /* Bad Network Path */
}
! else if (code == RXKADUNKNOWNKEY) {
! NTStatus = 0xC0000322L; /* Bad Kerberos key */
}
else if (code == CM_ERROR_BAD_LEVEL) {
NTStatus = 0xC0000148L; /* Invalid Level */
--- 2882,2889 ----
else if (code == CM_ERROR_ALLOFFLINE || code == CM_ERROR_ALLDOWN) {
NTStatus = 0xC00000BEL; /* Bad Network Path */
}
! else if (code >= ERROR_TABLE_BASE_RXK && code < ERROR_TABLE_BASE_RXK + 256) {
! NTStatus = 0xC0000322L; /* No Kerberos key */
}
else if (code == CM_ERROR_BAD_LEVEL) {
NTStatus = 0xC0000148L; /* Invalid Level */
Index: openafs/src/WINNT/afsd/smb3.c
diff -c openafs/src/WINNT/afsd/smb3.c:1.95.2.51 openafs/src/WINNT/afsd/smb3.c:1.95.2.53
*** openafs/src/WINNT/afsd/smb3.c:1.95.2.51 Mon Jan 28 02:23:35 2008
--- openafs/src/WINNT/afsd/smb3.c Mon Feb 18 00:53:56 2008
***************
*** 1472,1485 ****
} smb_rap_share_info_1_t;
typedef struct smb_rap_share_info_2 {
! char shi2_netname[13];
! char shi2_pad;
unsigned short shi2_type;
! DWORD shi2_remark; /* char *shi2_remark; data offset */
unsigned short shi2_permissions;
unsigned short shi2_max_uses;
unsigned short shi2_current_uses;
! DWORD shi2_path; /* char *shi2_path; data offset */
unsigned short shi2_passwd[9];
unsigned short shi2_pad2;
} smb_rap_share_info_2_t;
--- 1472,1485 ----
} smb_rap_share_info_1_t;
typedef struct smb_rap_share_info_2 {
! char shi2_netname[13];
! char shi2_pad;
unsigned short shi2_type;
! DWORD shi2_remark; /* char *shi2_remark; data offset */
unsigned short shi2_permissions;
unsigned short shi2_max_uses;
unsigned short shi2_current_uses;
! DWORD shi2_path; /* char *shi2_path; data offset */
unsigned short shi2_passwd[9];
unsigned short shi2_pad2;
} smb_rap_share_info_2_t;
***************
*** 1693,1698 ****
--- 1693,1703 ----
DWORD allSubmount;
LONG rv;
long code = 0;
+ cm_scache_t *scp = NULL;
+ cm_user_t *userp;
+ cm_req_t req;
+
+ cm_InitReq(&req);
tp = p->parmsp + 1; /* skip over function number (always 1) */
(void) smb_ParseString( (char *) tp, (char **) &tp); /* skip over param descriptor */
***************
*** 1712,1719 ****
else
return CM_ERROR_INVAL;
- outp = smb_GetTran2ResponsePacket(vcp, p, op, totalParam, totalData);
-
if(!stricmp(shareName,"all") || !strcmp(shareName,"*.")) {
rv = RegOpenKeyEx(HKEY_LOCAL_MACHINE, AFSREG_CLT_SVC_PARAM_SUBKEY, 0,
KEY_QUERY_VALUE, &hkParam);
--- 1717,1722 ----
***************
*** 1731,1752 ****
shareFound = TRUE;
} else {
! rv = RegOpenKeyEx(HKEY_LOCAL_MACHINE, AFSREG_CLT_SVC_PARAM_SUBKEY "\\Submounts", 0,
! KEY_QUERY_VALUE, &hkSubmount);
! if (rv == ERROR_SUCCESS) {
! rv = RegQueryValueEx(hkSubmount, shareName, NULL, NULL, NULL, NULL);
if (rv == ERROR_SUCCESS) {
! shareFound = TRUE;
}
- RegCloseKey(hkSubmount);
}
}
! if (!shareFound) {
! smb_FreeTran2Packet(outp);
return CM_ERROR_BADSHARENAME;
- }
memset(outp->datap, 0, totalData);
outp->parmsp[0] = 0;
--- 1734,1767 ----
shareFound = TRUE;
} else {
! userp = smb_GetTran2User(vcp, p);
! if (!userp) {
! osi_Log1(smb_logp,"ReceiveTran2GetDfsReferral unable to resolve user [%d]", p->uid);
! return CM_ERROR_BADSMB;
! }
! code = cm_NameI(cm_data.rootSCachep, shareName,
! CM_FLAG_FOLLOW | CM_FLAG_CASEFOLD | CM_FLAG_DFS_REFERRAL,
! userp, NULL, &req, &scp);
! if (code == 0) {
! cm_ReleaseSCache(scp);
! shareFound = TRUE;
! } else {
! rv = RegOpenKeyEx(HKEY_LOCAL_MACHINE, AFSREG_CLT_SVC_PARAM_SUBKEY "\\Submounts", 0,
! KEY_QUERY_VALUE, &hkSubmount);
if (rv == ERROR_SUCCESS) {
! rv = RegQueryValueEx(hkSubmount, shareName, NULL, NULL, NULL, NULL);
! if (rv == ERROR_SUCCESS) {
! shareFound = TRUE;
! }
! RegCloseKey(hkSubmount);
}
}
}
! if (!shareFound)
return CM_ERROR_BADSHARENAME;
+ outp = smb_GetTran2ResponsePacket(vcp, p, op, totalParam, totalData);
memset(outp->datap, 0, totalData);
outp->parmsp[0] = 0;
***************
*** 2139,2145 ****
spacep = cm_GetSpace();
smb_StripLastComponent(spacep->data, &lastNamep, pathp);
! if (lastNamep && strcmp(lastNamep, SMB_IOCTL_FILENAME) == 0) {
/* special case magic file name for receiving IOCTL requests
* (since IOCTL calls themselves aren't getting through).
*/
--- 2154,2164 ----
spacep = cm_GetSpace();
smb_StripLastComponent(spacep->data, &lastNamep, pathp);
! if (lastNamep &&
! (stricmp(lastNamep, SMB_IOCTL_FILENAME) == 0 ||
! stricmp(lastNamep, "\\srvsvc") == 0 ||
! stricmp(lastNamep, "\\wkssvc") == 0 ||
! stricmp(lastNamep, "\\ipc$") == 0)) {
/* special case magic file name for receiving IOCTL requests
* (since IOCTL calls themselves aren't getting through).
*/
***************
*** 5475,5481 ****
spacep = inp->spacep;
smb_StripLastComponent(spacep->data, &lastNamep, pathp);
! if (lastNamep && strcmp(lastNamep, SMB_IOCTL_FILENAME) == 0) {
/* special case magic file name for receiving IOCTL requests
* (since IOCTL calls themselves aren't getting through).
*/
--- 5494,5504 ----
spacep = inp->spacep;
smb_StripLastComponent(spacep->data, &lastNamep, pathp);
! if (lastNamep &&
! (stricmp(lastNamep, SMB_IOCTL_FILENAME) == 0 ||
! stricmp(lastNamep, "\\srvsvc") == 0 ||
! stricmp(lastNamep, "\\wkssvc") == 0 ||
! stricmp(lastNamep, "ipc$") == 0)) {
/* special case magic file name for receiving IOCTL requests
* (since IOCTL calls themselves aren't getting through).
*/
***************
*** 6597,6603 ****
osi_Log4(smb_logp,"... da=[%x] ea=[%x] cd=[%x] co=[%x]", desiredAccess, extAttributes, createDisp, createOptions);
osi_Log3(smb_logp,"... share=[%x] flags=[%x] lastNamep=[%s]", shareAccess, flags, osi_LogSaveString(smb_logp,(lastNamep?lastNamep:"null")));
! if (lastNamep && strcmp(lastNamep, SMB_IOCTL_FILENAME) == 0) {
/* special case magic file name for receiving IOCTL requests
* (since IOCTL calls themselves aren't getting through).
*/
--- 6620,6630 ----
osi_Log4(smb_logp,"... da=[%x] ea=[%x] cd=[%x] co=[%x]", desiredAccess, extAttributes, createDisp, createOptions);
osi_Log3(smb_logp,"... share=[%x] flags=[%x] lastNamep=[%s]", shareAccess, flags, osi_LogSaveString(smb_logp,(lastNamep?lastNamep:"null")));
! if (lastNamep &&
! (stricmp(lastNamep, SMB_IOCTL_FILENAME) == 0 ||
! stricmp(lastNamep, "\\srvsvc") == 0 ||
! stricmp(lastNamep, "\\wkssvc") == 0 ||
! stricmp(lastNamep, "ipc$") == 0)) {
/* special case magic file name for receiving IOCTL requests
* (since IOCTL calls themselves aren't getting through).
*/
Index: openafs/src/WINNT/client_creds/NTMakefile
diff -c openafs/src/WINNT/client_creds/NTMakefile:1.16.4.4 openafs/src/WINNT/client_creds/NTMakefile:1.16.4.5
*** openafs/src/WINNT/client_creds/NTMakefile:1.16.4.4 Fri Feb 8 21:32:23 2008
--- openafs/src/WINNT/client_creds/NTMakefile Tue Feb 12 08:21:17 2008
***************
*** 55,61 ****
ole32.lib \
mpr.lib \
userenv.lib \
! netapi32.lib
EXELIBS = \
$(DESTDIR)\lib\afs\afspioctl.lib \
--- 55,62 ----
ole32.lib \
mpr.lib \
userenv.lib \
! netapi32.lib \
! secur32.lib
EXELIBS = \
$(DESTDIR)\lib\afs\afspioctl.lib \
Index: openafs/src/WINNT/client_creds/advtab.cpp
diff -c openafs/src/WINNT/client_creds/advtab.cpp:1.9.4.1 openafs/src/WINNT/client_creds/advtab.cpp:1.9.4.2
*** openafs/src/WINNT/client_creds/advtab.cpp:1.9.4.1 Fri Feb 8 21:32:23 2008
--- openafs/src/WINNT/client_creds/advtab.cpp Mon Feb 11 11:44:27 2008
***************
*** 292,309 ****
void Advanced_OnStartup (HWND hDlg)
{
! g.fStartup = IsDlgButtonChecked (hDlg, IDC_STARTUP);
! HKEY hk;
! if (RegCreateKeyEx (HKEY_LOCAL_MACHINE, TEXT(AFSREG_CLT_SVC_PARAM_SUBKEY), 0, NULL, 0,
! (IsWow64()?KEY_WOW64_64KEY:0)|KEY_WRITE, NULL, &hk, NULL) == 0)
! {
! DWORD dwSize = sizeof(g.fStartup);
! DWORD dwType = REG_DWORD;
! RegSetValueEx (hk, TEXT("ShowTrayIcon"), NULL, dwType, (PBYTE)&g.fStartup, dwSize);
! RegCloseKey (hk);
! }
! Shortcut_FixStartup (cszSHORTCUT_NAME, g.fStartup);
}
--- 292,319 ----
void Advanced_OnStartup (HWND hDlg)
{
! BOOL bSuccess = FALSE;
! g.fStartup = IsDlgButtonChecked (hDlg, IDC_STARTUP);
! HKEY hk;
! if (RegCreateKeyEx (HKEY_LOCAL_MACHINE, TEXT(AFSREG_CLT_SVC_PARAM_SUBKEY), 0, NULL, 0,
! (IsWow64()?KEY_WOW64_64KEY:0)|KEY_WRITE, NULL, &hk, NULL) == 0)
! {
! DWORD dwSize = sizeof(g.fStartup);
! DWORD dwType = REG_DWORD;
! RegSetValueEx (hk, TEXT("ShowTrayIcon"), NULL, dwType, (PBYTE)&g.fStartup, dwSize);
! RegCloseKey (hk);
! bSuccess = Shortcut_FixStartup (cszSHORTCUT_NAME, g.fStartup);
! }
!
! if (!bSuccess) {
! // Reset the state
! g.fStartup = !g.fStartup;
! CheckDlgButton(hDlg, IDC_STARTUP, g.fStartup);
!
! // Report error to user
! Message (MB_OK | MB_ICONHAND, IDS_STARTUP_CHANGE_TITLE, IDS_STARTUP_CHANGE_ERROR);
! }
}
Index: openafs/src/WINNT/client_creds/main.cpp
diff -c openafs/src/WINNT/client_creds/main.cpp:1.16.4.1 openafs/src/WINNT/client_creds/main.cpp:1.16.4.2
*** openafs/src/WINNT/client_creds/main.cpp:1.16.4.1 Fri Feb 8 21:32:23 2008
--- openafs/src/WINNT/client_creds/main.cpp Mon Feb 11 11:44:27 2008
***************
*** 148,154 ****
fUninstall = TRUE;
break;
! case ':':
CopyAnsiToString(g.SmbName,pszCmdLineA);
MapShareName(pszCmdLineA);
break;
--- 148,154 ----
fUninstall = TRUE;
break;
! case ':':
CopyAnsiToString(g.SmbName,pszCmdLineA);
MapShareName(pszCmdLineA);
break;
***************
*** 175,181 ****
else if (fUninstall)
Shortcut_FixStartup (cszSHORTCUT_NAME, g.fStartup = FALSE);
! if (fInstall)
{
HKEY hk;
if (RegCreateKeyEx (HKEY_CURRENT_USER, AFSREG_USER_OPENAFS_SUBKEY, 0, NULL, 0,
--- 175,181 ----
else if (fUninstall)
Shortcut_FixStartup (cszSHORTCUT_NAME, g.fStartup = FALSE);
! if (fInstall || fUninstall)
{
HKEY hk;
if (RegCreateKeyEx (HKEY_CURRENT_USER, AFSREG_USER_OPENAFS_SUBKEY, 0, NULL, 0,
Index: openafs/src/WINNT/client_creds/resource.h
diff -c openafs/src/WINNT/client_creds/resource.h:1.6 openafs/src/WINNT/client_creds/resource.h:1.6.4.1
*** openafs/src/WINNT/client_creds/resource.h:1.6 Sun Aug 14 07:25:23 2005
--- openafs/src/WINNT/client_creds/resource.h Mon Feb 11 11:44:27 2008
***************
*** 59,64 ****
--- 59,66 ----
#define IDS_BADSUB_DESC 49
#define IDS_TITLE_95 50
#define IDS_CREDS_EXPIRED 51
+ #define IDS_STARTUP_CHANGE_TITLE 52
+ #define IDS_STARTUP_CHANGE_ERROR 53
#define IDI_MAIN 100
#define IDD_MAIN 101
Index: openafs/src/WINNT/client_creds/shortcut.cpp
diff -c openafs/src/WINNT/client_creds/shortcut.cpp:1.10.4.1 openafs/src/WINNT/client_creds/shortcut.cpp:1.10.4.2
*** openafs/src/WINNT/client_creds/shortcut.cpp:1.10.4.1 Fri Feb 8 21:32:23 2008
--- openafs/src/WINNT/client_creds/shortcut.cpp Mon Feb 11 11:44:27 2008
***************
*** 79,87 ****
}
! void Shortcut_FixStartup (LPCTSTR pszLinkName, BOOL fAutoStart)
{
TCHAR szShortcut[ MAX_PATH + 10 ] = TEXT("");
HKEY hk;
if (RegOpenKey (HKEY_LOCAL_MACHINE, TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders"), &hk) == 0)
--- 79,88 ----
}
! BOOL Shortcut_FixStartup (LPCTSTR pszLinkName, BOOL fAutoStart)
{
TCHAR szShortcut[ MAX_PATH + 10 ] = TEXT("");
+ BOOL bSuccess;
HKEY hk;
if (RegOpenKey (HKEY_LOCAL_MACHINE, TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders"), &hk) == 0)
***************
*** 133,143 ****
RegCloseKey (hk);
}
}
! Shortcut_Create (szShortcut, szSource, "Autostart Authentication Agent", szParams);
}
else // (!g.fAutoStart)
{
! DeleteFile (szShortcut);
}
}
--- 134,146 ----
RegCloseKey (hk);
}
}
! bSuccess = Shortcut_Create (szShortcut, szSource, "Autostart Authentication Agent", szParams);
}
else // (!g.fAutoStart)
{
! bSuccess = DeleteFile (szShortcut);
}
+
+ return bSuccess;
}
Index: openafs/src/WINNT/client_creds/shortcut.h
diff -c openafs/src/WINNT/client_creds/shortcut.h:1.3 openafs/src/WINNT/client_creds/shortcut.h:1.3.14.1
*** openafs/src/WINNT/client_creds/shortcut.h:1.3 Fri Nov 21 13:33:10 2003
--- openafs/src/WINNT/client_creds/shortcut.h Mon Feb 11 11:44:27 2008
***************
*** 19,25 ****
void Shortcut_Init (void);
void Shortcut_Exit (void);
BOOL Shortcut_Create (LPTSTR pszTarget, LPCTSTR pszSource, LPTSTR pszDesc = NULL, LPTSTR pszArgs = NULL);
! void Shortcut_FixStartup (LPCTSTR pszLinkName, BOOL fAutoStart);
#endif
--- 19,25 ----
void Shortcut_Init (void);
void Shortcut_Exit (void);
BOOL Shortcut_Create (LPTSTR pszTarget, LPCTSTR pszSource, LPTSTR pszDesc = NULL, LPTSTR pszArgs = NULL);
! BOOL Shortcut_FixStartup (LPCTSTR pszLinkName, BOOL fAutoStart);
#endif
Index: openafs/src/WINNT/client_creds/window.cpp
diff -c openafs/src/WINNT/client_creds/window.cpp:1.16.4.2 openafs/src/WINNT/client_creds/window.cpp:1.16.4.3
*** openafs/src/WINNT/client_creds/window.cpp:1.16.4.2 Fri Feb 8 21:32:23 2008
--- openafs/src/WINNT/client_creds/window.cpp Tue Feb 12 08:21:17 2008
***************
*** 16,21 ****
--- 16,24 ----
#include "afscreds.h"
+ #define SECURITY_WIN32 1
+ #include OpenAFS for Windows
! Version 1.5.31
OpenAFS for Windows
! Version 1.5.32
--- 80,86 ---- · OpenAFS for Windows 1.5.32 Release Notes
Index: openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo.htm diff -c openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo.htm:1.1.6.26 openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo.htm:1.1.6.27 *** openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo.htm:1.1.6.26 Wed Feb 6 12:58:20 2008 --- openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo.htm Sun Feb 17 23:37:48 2008 *************** *** 18,24 **** .shape {behavior:url(#default#VML);} !
OpenAFS for Windows 1.5.31
Release Notes
The Andrew File System (AFS) is a location-independent --- 597,603 ----
OpenAFS for Windows 1.5.32
Release Notes
The Andrew File System (AFS) is a location-independent *************** *** 657,668 **** Operational Notes
!4. How to ! Debug Problems with OpenAFS for Windows:
6. How to --- 657,668 ---- Operational Notes
!4. How to ! Debug Problems with OpenAFS for Windows
6. How to *************** *** 2346,2352 **** allocate additional space.
OpenAFS for Windows provides a wide range of tools to assist you in debugging problems. The techniques available to you are varied --- 2346,2352 ---- allocate additional space.
OpenAFS for Windows provides a wide range of tools to assist you in debugging problems. The techniques available to you are varied *************** *** 2512,2517 **** --- 2512,2520 ---- with access to the source code and a debugger. The "fs minidump" command can be used to force the generation of a MiniDump file containing the state of all of the threads in the AFS Client Service process.
+The MiniDumpType registry + value can be used to adjust the scope of the process information included within + the dump file.
Bug reports should be sent to openafs-bugs@openafs.org. --- 2647,2654 ----
Bug reports should be sent to openafs-bugs@openafs.org.
Index: openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/toc.htm
diff -c openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/toc.htm:1.2.6.27 openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/toc.htm:1.2.6.28
*** openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/toc.htm:1.2.6.27 Wed Feb 6 12:58:21 2008
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/toc.htm Sun Feb 17 23:37:49 2008
***************
*** 10,16 ****