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 + /* * DEFINITIONS ________________________________________________________________ * *************** *** 255,261 **** TCHAR szVersion[256]; DWORD dwPatch = 0; ! TCHAR szUser[256]; GetString (szVersion, IDS_UNKNOWN); GetString (szUser, IDS_UNKNOWN); --- 258,264 ---- TCHAR szVersion[256]; DWORD dwPatch = 0; ! TCHAR szUser[1024]; GetString (szVersion, IDS_UNKNOWN); GetString (szUser, IDS_UNKNOWN); *************** *** 273,321 **** RegCloseKey (hk); } ! /* We should probably be using GetUserNameEx() for this */ ! BOOL fFoundUserName = FALSE; ! if (RegOpenKey (HKEY_CURRENT_USER, TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer"), &hk) == 0) ! { ! DWORD dwSize = sizeof(szUser); ! DWORD dwType = REG_SZ; ! if (RegQueryValueEx (hk, TEXT("Logon User Name"), NULL, &dwType, (PBYTE)szUser, &dwSize) == 0) ! fFoundUserName = TRUE; ! RegCloseKey (hk); ! } ! if (!fFoundUserName ) ! { ! if (RegOpenKey (HKEY_LOCAL_MACHINE, TEXT("Software\\Microsoft\\Windows NT\\CurrentVersion\\Explorer"), &hk) == 0) ! { ! DWORD dwSize = sizeof(szUser); ! DWORD dwType = REG_SZ; ! if (RegQueryValueEx (hk, TEXT("Logon User Name"), NULL, &dwType, (PBYTE)szUser, &dwSize) == 0) ! fFoundUserName = TRUE; ! RegCloseKey (hk); ! } ! } ! if (!fFoundUserName ) ! { ! if (RegOpenKey (HKEY_LOCAL_MACHINE, TEXT("Software\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon"), &hk) == 0) ! { ! DWORD dwSize = sizeof(szUser); ! DWORD dwType = REG_SZ; ! if (RegQueryValueEx (hk, TEXT("DefaultUserName"), NULL, &dwType, (PBYTE)szUser, &dwSize) == 0) ! fFoundUserName = TRUE; ! RegCloseKey (hk); ! } ! } ! if (!fFoundUserName) ! { ! if (RegOpenKey (HKEY_LOCAL_MACHINE, TEXT("Network\\Logon"), &hk) == 0) ! { ! DWORD dwSize = sizeof(szUser); ! DWORD dwType = REG_SZ; ! if (RegQueryValueEx (hk, TEXT("UserName"), NULL, &dwType, (PBYTE)szUser, &dwSize) == 0) ! fFoundUserName = TRUE; ! RegCloseKey (hk); ! } ! } TCHAR szSource[ cchRESOURCE ]; TCHAR szTarget[ cchRESOURCE ]; --- 276,284 ---- RegCloseKey (hk); } ! DWORD dwUserLen = sizeof(szUser)/sizeof(TCHAR); ! if (!GetUserNameEx(NameUserPrincipal, szUser, &dwUserLen)) ! GetUserNameEx(NameSamCompatible, szUser, &dwUserLen); TCHAR szSource[ cchRESOURCE ]; TCHAR szTarget[ cchRESOURCE ]; Index: openafs/src/WINNT/client_creds/lang/en_US/afscreds.rc diff -c openafs/src/WINNT/client_creds/lang/en_US/afscreds.rc:1.9.4.1 openafs/src/WINNT/client_creds/lang/en_US/afscreds.rc:1.9.4.2 *** openafs/src/WINNT/client_creds/lang/en_US/afscreds.rc:1.9.4.1 Tue Dec 12 15:41:18 2006 --- openafs/src/WINNT/client_creds/lang/en_US/afscreds.rc Mon Feb 11 11:44:29 2008 *************** *** 561,566 **** --- 561,568 ---- IDS_BADSUB_DESC "The drive letter description you entered cannot be used.\n\nA drive letter description may have no more than 12 characters, and may not contain spaces or tabs." IDS_TITLE_95 "AFS Light" IDS_CREDS_EXPIRED "%1 (expired)" + IDS_STARTUP_CHANGE_TITLE "Error - Startup Setting" + IDS_STARTUP_CHANGE_ERROR "Unable to change startup state.\nPermission denied." END #endif // English (U.S.) resources ///////////////////////////////////////////////////////////////////////////// Index: openafs/src/WINNT/client_osi/NTMakefile diff -c openafs/src/WINNT/client_osi/NTMakefile:1.10.4.2 openafs/src/WINNT/client_osi/NTMakefile:1.10.4.3 *** openafs/src/WINNT/client_osi/NTMakefile:1.10.4.2 Sat Feb 2 08:43:23 2008 --- openafs/src/WINNT/client_osi/NTMakefile Tue Feb 12 08:32:53 2008 *************** *** 45,51 **** osidebug.obj EXELIBS = \ ! rpcrt4.lib rpcns4.lib \ Ws2_32.lib shell32.lib \ $(DESTDIR)\lib\libosi.lib --- 45,52 ---- osidebug.obj EXELIBS = \ ! rpcrt4.lib \ ! # rpcns4.lib \ Ws2_32.lib shell32.lib \ $(DESTDIR)\lib\libosi.lib *************** *** 71,77 **** DLLLIBS =\ rpcrt4.lib \ ! rpcns4.lib $(DLLFILE): $(DLLOBJS) $(DLLGUILINK) $(DLLLIBS) -def:libosi.def --- 72,78 ---- DLLLIBS =\ rpcrt4.lib \ ! # rpcns4.lib $(DLLFILE): $(DLLOBJS) $(DLLGUILINK) $(DLLLIBS) -def:libosi.def Index: openafs/src/WINNT/client_osi/osilog.c diff -c openafs/src/WINNT/client_osi/osilog.c:1.12.4.2 openafs/src/WINNT/client_osi/osilog.c:1.12.4.3 *** openafs/src/WINNT/client_osi/osilog.c:1.12.4.2 Sat Oct 7 18:36:03 2006 --- openafs/src/WINNT/client_osi/osilog.c Thu Feb 14 09:09:18 2008 *************** *** 273,278 **** --- 273,282 ---- { char *saveplace; + if (!logp) return s; + + if (!logp->enabled) s; + if (s == NULL) return NULL; thrd_EnterCrit(&logp->cs); Index: openafs/src/WINNT/doc/install/Documentation/en_US/html/index.htm diff -c openafs/src/WINNT/doc/install/Documentation/en_US/html/index.htm:1.5.4.26 openafs/src/WINNT/doc/install/Documentation/en_US/html/index.htm:1.5.4.27 *** openafs/src/WINNT/doc/install/Documentation/en_US/html/index.htm:1.5.4.26 Wed Feb 6 12:58:17 2008 --- openafs/src/WINNT/doc/install/Documentation/en_US/html/index.htm Sun Feb 17 23:37:44 2008 *************** *** 57,63 ****

OpenAFS for Windows

!

Version 1.5.31

 

--- 57,63 ----

OpenAFS for Windows

!

Version 1.5.32

 

*************** *** 80,86 **** ·         OpenAFS for Windows 1.5.31 Release Notes

--- 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 ! OpenAFS for Windows 1.5.32 Release Notes ! OpenAFS for Windows 1.5.31 Release Notes ! OpenAFS for Windows 1.5.32 Release Notes !

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. 2

!

4. How to ! Debug Problems with OpenAFS for Windows: 11

5. Reporting ! Bugs: 13

6. How to --- 657,668 ---- Operational Notes. 2

!

4. How to ! Debug Problems with OpenAFS for Windows 11

5. Reporting ! Bugs 13

6. How to *************** *** 2346,2352 **** allocate additional space.

4. How to ! Debug Problems with OpenAFS for Windows:

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.

4. How to ! Debug Problems with OpenAFS for Windows

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.

5. ! Reporting Bugs:

Bug reports should be sent to openafs-bugs@openafs.org.  --- 2647,2654 ----

5. ! Reporting Bugs

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 **** ! OpenAFS for Windows 1.5.31 Table of Contents