Index: src/server.cpp =================================================================== RCS file: /cvs/cvsnt/src/server.c,v retrieving revision 1.106.2.210.6.13 diff -c -r1.106.2.210.6.13 server.cpp *** src/server.cpp 9 May 2008 01:34:40 -0000 1.106.2.210.6.13 --- src/server.cpp 13 May 2008 04:57:57 -0000 *************** *** 1518,1523 **** --- 1518,1533 ---- */ static void receive_partial_file (int size, int file, bool check_textfile, CMD5Calc* md5, bool& modified) { + size_t nr = (size_t)0; + char buffer2[MAX_PATH]="\0"; + int setmem=1024000, checkit=0; + int nreadcount=0, nreadavg=0; + TRACE(99,"receive_partial_file (size = %d)",size); + if(!CGlobalSettings::GetGlobalValue("cvsnt","PServer","StripCrLf",buffer2,sizeof(buffer2))) + setmem = atoi(buffer2); + if(!CGlobalSettings::GetGlobalValue("cvsnt","PServer","StripCrLfCheck",buffer2,sizeof(buffer2))) + checkit = atoi(buffer2); + CCodepage cdp; while (size > 0) { int status; *************** *** 1540,1548 **** --- 1550,1569 ---- error(1,0,"error reading from client"); } } + TRACE(99,"receive_partial_file[3] (modified = %s, nreadcount=%d, nreadavg=%d)",(modified)?"yes":"no",nreadcount,nreadavg); return; } + nreadcount++; + if (nreadavg!=0) + { + nreadavg+=nread; + } + else + { + nreadavg+=nread; + nreadavg=nreadavg/2; + } size -= nread; if(check_textfile && nread) *************** *** 1550,1564 **** /* Don't allow people to corrupt their repositories, even accidentally */ if(memchr(data,'\r',nread)!=NULL) { ! CCodepage cdp; ! char buffer2[MAX_PATH]="\0"; ! int setmem=1024000, checkit=0; ! ! size_t nr = (size_t)nread; ! if(!CGlobalSettings::GetGlobalValue("cvsnt","PServer","StripCrLf",buffer2,sizeof(buffer2))) ! setmem = atoi(buffer2); ! if(!CGlobalSettings::GetGlobalValue("cvsnt","PServer","StripCrLfCheck",buffer2,sizeof(buffer2))) ! checkit = atoi(buffer2); cdp.StripCrLf(data,nr,setmem,checkit); nread = (int)nr; modified = true; --- 1571,1578 ---- /* Don't allow people to corrupt their repositories, even accidentally */ if(memchr(data,'\r',nread)!=NULL) { ! ! nr = (size_t)nread; cdp.StripCrLf(data,nr,setmem,checkit); nread = (int)nr; modified = true; *************** *** 1585,1600 **** status = buf_read_data (buf_from_net, size, &data, &nread); if (status != 0) ! return; size -= nread; } ! return; } nread -= nwrote; data += nwrote; } } } /* Receive SIZE bytes, write to filename FILE. */ --- 1599,1628 ---- status = buf_read_data (buf_from_net, size, &data, &nread); if (status != 0) ! { ! TRACE(99,"receive_partial_file[2] (modified = %s, nreadcount=%d, nreadavg=%d)",(modified)?"yes":"no",nreadcount,nreadavg); ! return; ! } ! nreadcount++; ! if (nreadavg!=0) ! { ! nreadavg+=nread; ! } ! else ! { ! nreadavg+=nread; ! nreadavg=nreadavg/2; ! } size -= nread; } ! TRACE(99,"receive_partial_file[1] (modified = %s, nreadcount=%d, nreadavg=%d)",(modified)?"yes":"no",nreadcount,nreadavg); return; } nread -= nwrote; data += nwrote; } } + TRACE(99,"receive_partial_file (modified = %s, nreadcount=%d, nreadavg=%d)",(modified)?"yes":"no",nreadcount,nreadavg); } /* Receive SIZE bytes, write to filename FILE. */ *************** *** 1605,1610 **** --- 1633,1642 ---- bool modified = false; CMD5Calc *md5 = NULL; + TRACE(99,"receive_file(size = %d %s %s \"%s\")", + size,(checksum_valid)?"checksum_valid":"!checksum_valid", + (check_textfile)?"check_textfile":"!check_textfile",file); + if(checksum_valid) md5 = new CMD5Calc; *************** *** 1625,1630 **** --- 1657,1663 ---- error(1,errno,"cannot close %s", arg); return; } + TRACE(99,"receive_file() done?"); if(md5) { *************** *** 1707,1714 **** } if (size >= 0) receive_file (size, arg, !(serve_file_kopt(arg).flags&(KFLAG_BINARY|KFLAG_ENCODED))); ! if (checkin_time_valid) { struct utimbuf t; --- 1740,1749 ---- } if (size >= 0) + { + TRACE(99,"serve_modified() serve_file_kopt(arg).flags %s %s",(serve_file_kopt(arg).flags&KFLAG_BINARY)?"KFLAG_BINARY":"",(serve_file_kopt(arg).flags&KFLAG_ENCODED)?"KFLAG_ENCODED":""); receive_file (size, arg, !(serve_file_kopt(arg).flags&(KFLAG_BINARY|KFLAG_ENCODED))); ! } if (checkin_time_valid) { struct utimbuf t;