@@ -210,7 +210,6 @@ void BulkPropagatorJob::triggerUpload()
210210 0 ,
211211 std::numeric_limits<qint64>::max (),
212212 &propagator ()->_bandwidthManager );
213- singleFile._headers [" Content-Length" ] = QByteArray::number (device->size ());
214213 } else {
215214 device = std::make_unique<UploadDevice>(singleFile._localPath ,
216215 0 ,
@@ -234,7 +233,7 @@ void BulkPropagatorJob::triggerUpload()
234233 }
235234
236235 singleFile._headers [" X-File-Path" ] = singleFile._remotePath .toUtf8 ();
237- singleFile._headers [" X -File-Type" ] = QString::number (singleFile._item ->_type == ItemTypeSoftLink ).toUtf8 ();
236+ singleFile._headers [" OC -File-Type" ] = QString::number (singleFile._item ->_type ).toUtf8 ();
238237 uploadParametersData.push_back ({std::move (device), singleFile._headers });
239238 timeout += singleFile._fileSize ;
240239 }
@@ -282,12 +281,24 @@ void BulkPropagatorJob::slotComputeTransmissionChecksum(SyncFileItemPtr item,
282281 const auto checksumType = uploadChecksumEnabled () ? " MD5" : " " ;
283282 computeChecksum->setChecksumType (checksumType);
284283
285- connect (computeChecksum, &ComputeChecksum::done, this , [this , item, fileToUpload] (const QByteArray &contentChecksumType, const QByteArray &contentChecksum) {
286- slotStartUpload (item, fileToUpload, contentChecksumType, contentChecksum);
287- });
288- connect (computeChecksum, &ComputeChecksum::done, computeChecksum, &QObject::deleteLater);
284+ if (item->_type == CSyncEnums::ItemTypeSoftLink) {
285+ auto checksumDevice = QSharedPointer<SymLinkUploadDevice>::create (fileToUpload._path ,
286+ 0 ,
287+ std::numeric_limits<qint64>::max (),
288+ &propagator ()->_bandwidthManager );
289+ const auto contentChecksum = ComputeChecksum ().computeNow (checksumDevice, checksumType);
290+ item->_size = checksumDevice->size ();
291+ fileToUpload._size = checksumDevice->size ();
292+ slotStartUpload (item, fileToUpload, checksumType, contentChecksum);
293+ computeChecksum->deleteLater ();
294+ } else {
295+ connect (computeChecksum, &ComputeChecksum::done, this , [this , item, fileToUpload] (const QByteArray &contentChecksumType, const QByteArray &contentChecksum) {
296+ slotStartUpload (item, fileToUpload, contentChecksumType, contentChecksum);
297+ });
298+ connect (computeChecksum, &ComputeChecksum::done, computeChecksum, &QObject::deleteLater);
289299
290- computeChecksum->start (fileToUpload._path );
300+ computeChecksum->start (fileToUpload._path );
301+ }
291302}
292303
293304void BulkPropagatorJob::slotStartUpload (SyncFileItemPtr item,
@@ -333,8 +344,10 @@ void BulkPropagatorJob::slotStartUpload(SyncFileItemPtr item,
333344 return ;
334345 }
335346
336- fileToUpload._size = FileSystem::getSize (fullFilePath);
337- item->_size = FileSystem::getSize (originalFilePath);
347+ if (!item->isSymLink ()) {
348+ fileToUpload._size = FileSystem::getSize (fullFilePath);
349+ item->_size = FileSystem::getSize (originalFilePath);
350+ }
338351
339352 // But skip the file if the mtime is too close to 'now'!
340353 // That usually indicates a file that is still being changed
0 commit comments