Fossil SCM
Be more forgiving of time skew when transferring large packets over slow networks. Ticket [25d3f8d5641deed]
Commit
139c7e52e2cd81291fca0cd2d9745243942f520c
Parent
6e18150e49721d6…
1 file changed
+9
-6
+9
-6
| --- src/xfer.c | ||
| +++ src/xfer.c | ||
| @@ -1426,16 +1426,19 @@ | ||
| 1426 | 1426 | char zTime[20]; |
| 1427 | 1427 | double rDiff; |
| 1428 | 1428 | sqlite3_snprintf(sizeof(zTime), zTime, "%.19s", &zLine[12]); |
| 1429 | 1429 | rDiff = db_double(9e99, "SELECT julianday('%q') - %.17g", |
| 1430 | 1430 | zTime, rArrivalTime); |
| 1431 | - if( rDiff<0.0 ) rDiff = -rDiff; | |
| 1432 | - if( rDiff>9e98 ) rDiff = 0.0; | |
| 1433 | - if( (rDiff*24.0*3600.0)>=60.0 ){ | |
| 1434 | - fossil_warning("*** time skew *** server time differs by %s", | |
| 1435 | - db_timespan_name(rDiff)); | |
| 1436 | - g.clockSkewSeen = 1; | |
| 1431 | + if( rDiff>9e98 || rDiff<-9e98 ) rDiff = 0.0; | |
| 1432 | + if( (rDiff*24.0*3600.0) > 10.0 ){ | |
| 1433 | + fossil_warning("*** time skew *** server is fast by %s", | |
| 1434 | + db_timespan_name(rDiff)); | |
| 1435 | + g.clockSkewSeen = 1; | |
| 1436 | + }else if( rDiff*24.0*3600.0 < -(blob_size(&recv)/5000.0 + 20.0) ){ | |
| 1437 | + fossil_warning("*** time skew *** server is slow by %s", | |
| 1438 | + db_timespan_name(-rDiff)); | |
| 1439 | + g.clockSkewSeen = 1; | |
| 1437 | 1440 | } |
| 1438 | 1441 | } |
| 1439 | 1442 | continue; |
| 1440 | 1443 | } |
| 1441 | 1444 | xfer.nToken = blob_tokenize(&xfer.line, xfer.aToken, count(xfer.aToken)); |
| 1442 | 1445 |
| --- src/xfer.c | |
| +++ src/xfer.c | |
| @@ -1426,16 +1426,19 @@ | |
| 1426 | char zTime[20]; |
| 1427 | double rDiff; |
| 1428 | sqlite3_snprintf(sizeof(zTime), zTime, "%.19s", &zLine[12]); |
| 1429 | rDiff = db_double(9e99, "SELECT julianday('%q') - %.17g", |
| 1430 | zTime, rArrivalTime); |
| 1431 | if( rDiff<0.0 ) rDiff = -rDiff; |
| 1432 | if( rDiff>9e98 ) rDiff = 0.0; |
| 1433 | if( (rDiff*24.0*3600.0)>=60.0 ){ |
| 1434 | fossil_warning("*** time skew *** server time differs by %s", |
| 1435 | db_timespan_name(rDiff)); |
| 1436 | g.clockSkewSeen = 1; |
| 1437 | } |
| 1438 | } |
| 1439 | continue; |
| 1440 | } |
| 1441 | xfer.nToken = blob_tokenize(&xfer.line, xfer.aToken, count(xfer.aToken)); |
| 1442 |
| --- src/xfer.c | |
| +++ src/xfer.c | |
| @@ -1426,16 +1426,19 @@ | |
| 1426 | char zTime[20]; |
| 1427 | double rDiff; |
| 1428 | sqlite3_snprintf(sizeof(zTime), zTime, "%.19s", &zLine[12]); |
| 1429 | rDiff = db_double(9e99, "SELECT julianday('%q') - %.17g", |
| 1430 | zTime, rArrivalTime); |
| 1431 | if( rDiff>9e98 || rDiff<-9e98 ) rDiff = 0.0; |
| 1432 | if( (rDiff*24.0*3600.0) > 10.0 ){ |
| 1433 | fossil_warning("*** time skew *** server is fast by %s", |
| 1434 | db_timespan_name(rDiff)); |
| 1435 | g.clockSkewSeen = 1; |
| 1436 | }else if( rDiff*24.0*3600.0 < -(blob_size(&recv)/5000.0 + 20.0) ){ |
| 1437 | fossil_warning("*** time skew *** server is slow by %s", |
| 1438 | db_timespan_name(-rDiff)); |
| 1439 | g.clockSkewSeen = 1; |
| 1440 | } |
| 1441 | } |
| 1442 | continue; |
| 1443 | } |
| 1444 | xfer.nToken = blob_tokenize(&xfer.line, xfer.aToken, count(xfer.aToken)); |
| 1445 |