Index: src/main.cpp =================================================================== RCS file: /usr/local/cvs/cvsnt/src/main.c,v retrieving revision 1.71.2.151.6.77 diff -c -r1.71.2.151.6.77 main.cpp *** src/main.cpp 28 Aug 2012 08:54:48 -0000 1.71.2.151.6.77 --- src/main.cpp 29 Aug 2012 08:29:08 -0000 *************** *** 1563,1577 **** if (key>=0) semid = semget(key,1,0666); else ! CServerIo::trace(3,"ftok failed - no path %s",base_pathbuf); swprintf(semnamew,2048,L"%s_%d(%lu)",base_pathbuf,myppid,(unsigned long)key); } if(semid < 0) { sem_errno = errno; sem_err = strerror(sem_errno); ! CServerIo::log(CServerIo::logError,"Open Semaphore failed - cannot ensure that client terminates ok: %s\nThis may be caused by a person trying to run 'cvsnt' rather than 'cvs'.",sem_err); ! CServerIo::trace(3,"Open Semaphore failed - cannot ensure client terminates OK: %s",sem_err); error (1, 0, "Please run \"cvs\" not \"cvsnt\".\nError cannot continue.\n"); } else --- 1563,1583 ---- if (key>=0) semid = semget(key,1,0666); else ! { ! sem_errno = errno; ! sem_err = strerror(sem_errno); ! CServerIo::log(CServerIo::logError,"Open Semaphore failed (ftok) - cannot ensure that client terminates ok: %s\nThis may be caused by a missing file '%s'.",sem_err,base_pathbuf); ! CServerIo::trace(3,"Open Semaphore failed - ftok(%s) - cannot ensure client terminates OK: %s",base_pathbuf,sem_err); ! error (1, 0, "Fatal error \"cvsproxy\" not found in \"%s\".\nError cannot continue.\n",dirname(real_pathbuf)); ! } swprintf(semnamew,2048,L"%s_%d(%lu)",base_pathbuf,myppid,(unsigned long)key); } if(semid < 0) { sem_errno = errno; sem_err = strerror(sem_errno); ! CServerIo::log(CServerIo::logError,"Open Semaphore failed (semget) - cannot ensure that client terminates ok: %s\nThis may be caused by a person trying to run 'cvsnt' rather than 'cvs'.",sem_err); ! CServerIo::trace(3,"Open Semaphore failed (semget) - cannot ensure client terminates OK: %s",sem_err); error (1, 0, "Please run \"cvs\" not \"cvsnt\".\nError cannot continue.\n"); } else Index: cvstools/ServerInfo.cpp =================================================================== RCS file: /usr/local/cvs/cvsnt/cvstools/ServerInfo.cpp,v retrieving revision 1.1.2.7.4.8 diff -c -r1.1.2.7.4.8 ServerInfo.cpp *** cvstools/ServerInfo.cpp 31 May 2012 02:47:30 -0000 1.1.2.7.4.8 --- cvstools/ServerInfo.cpp 29 Aug 2012 04:51:47 -0000 *************** *** 74,80 **** sockptr = new CSocketIO(); if(!sockptr->create(remote,(remotep)?remotep+1:"2401",false,true,rtimeout,stimeout)) { ! CServerIo::error("Couldn't create socket: %s",sockptr->error()); delete sockptr; return false; } --- 74,80 ---- sockptr = new CSocketIO(); if(!sockptr->create(remote,(remotep)?remotep+1:"2401",false,true,rtimeout,stimeout)) { ! CServerIo::error("Couldn't create socket: %s\n",sockptr->error()); delete sockptr; return false; } *************** *** 87,93 **** // otherwise if this is the first return - just give the message if (retry_connect_count>1) { ! CServerIo::error("Couldn't connect to remote server: %s",sockptr->error()); delete sockptr; return false; } --- 87,94 ---- // otherwise if this is the first return - just give the message if (retry_connect_count>1) { ! CServerIo::trace(3,"Couldn't connect to remote server: %s",sockptr->error()); ! CServerIo::error("Couldn't connect to remote server: %s\n",sockptr->error()); delete sockptr; return false; } Index: CvsProxyUnix.cpp =================================================================== RCS file: /scotty/cvsproxy/CvsProxyUnix.cpp,v retrieving revision 1.12 diff -c -r1.12 CvsProxyUnix.cpp *** CvsProxyUnix.cpp 28 Aug 2012 09:55:09 -0000 1.12 --- CvsProxyUnix.cpp 29 Aug 2012 08:24:11 -0000 *************** *** 354,359 **** --- 354,362 ---- wcscpy(semnamew,L"\0"); + int sem_errno; + const char *sem_err; + if (strlen(real_pathbuf)>0) { char *bundle_id; *************** *** 366,378 **** strcat(real_filename, "/"); strcat(real_filename, "cvsnt"); key = ftok(base_pathbuf,mypid); semid = semget(key,1,0666 | IPC_CREAT); swprintf(semnamew,2048,L"%s_%d(%lu)",base_pathbuf,(int)mypid,(unsigned long)key); } - int sem_errno; - const char *sem_err; - if(semid < 0) { if (strlen(base_pathbuf)>0) --- 369,389 ---- strcat(real_filename, "/"); strcat(real_filename, "cvsnt"); key = ftok(base_pathbuf,mypid); + if (key>=0) + semid = semget(key,1,0666); + else + { + sem_errno = errno; + sem_err = strerror(sem_errno); + swprintf(semnamew,2048,L"%s_%d(%lu)",base_pathbuf,(int)mypid,(unsigned long)key); + CServerIo::trace(3,"Create Semaphore (%S) failed - cannot ensure that accept() is not raced (%S): %s",semnamew,sem_err); + CServerIo::log(CServerIo::logError,DISPLAY_NAMEA" Create Semaphore failed (ftok) - cannot ensure that accept() is not raced (%S): %s\n",semnamew,sem_err); + printf("Create Semaphore failed - cannot ensure that accept() is not raced (%S): %s",semnamew,sem_err); + } semid = semget(key,1,0666 | IPC_CREAT); swprintf(semnamew,2048,L"%s_%d(%lu)",base_pathbuf,(int)mypid,(unsigned long)key); } if(semid < 0) { if (strlen(base_pathbuf)>0) *************** *** 383,391 **** else sem_err=strdup("** no real path **"); ! CServerIo::log(CServerIo::logError,DISPLAY_NAMEA" Create Semaphore failed - cannot ensure that accept() is not raced: %s\n",sem_err); ! CServerIo::trace(3,"Create Semaphore (%S) failed - cannot ensure that accept() is not raced (%s): %s",semnamew,sem_err); ! printf("Create Semaphore failed - cannot ensure that accept() is not raced: %s\n",sem_err); } CServerIo::trace(3,"Create Semaphore (%S) OK",semnamew); --- 394,402 ---- else sem_err=strdup("** no real path **"); ! CServerIo::log(CServerIo::logError,DISPLAY_NAMEA" Create Semaphore failed (semget) - cannot ensure that accept() is not raced: %s\n",sem_err); ! CServerIo::trace(3,"Create Semaphore (%S) failed (semget) - cannot ensure that accept() is not raced (%S): %s",semnamew,sem_err); ! printf("Create Semaphore failed (semget) - cannot ensure that accept() is not raced: %s\n",sem_err); } CServerIo::trace(3,"Create Semaphore (%S) OK",semnamew);