aboutsummaryrefslogtreecommitdiff
path: root/src/burn/engine/elevation.cpp
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2022-08-03 14:55:23 -0500
committerSean Hall <r.sean.hall@gmail.com>2022-08-03 15:57:24 -0500
commit124fef398a26bc8e139e889a2345602d2478590c (patch)
tree002c77e0c1d72b0cc0e46bed3c6f02d4179625fe /src/burn/engine/elevation.cpp
parenta896fec453056aa5e1ad803b04a672d2dceda981 (diff)
downloadwix-124fef398a26bc8e139e889a2345602d2478590c.tar.gz
wix-124fef398a26bc8e139e889a2345602d2478590c.tar.bz2
wix-124fef398a26bc8e139e889a2345602d2478590c.zip
Add ability to skip a local path candidate if it failed verification.
Fixes 6818
Diffstat (limited to 'src/burn/engine/elevation.cpp')
-rw-r--r--src/burn/engine/elevation.cpp23
1 files changed, 20 insertions, 3 deletions
diff --git a/src/burn/engine/elevation.cpp b/src/burn/engine/elevation.cpp
index e165a257..ef9c6e97 100644
--- a/src/burn/engine/elevation.cpp
+++ b/src/burn/engine/elevation.cpp
@@ -42,6 +42,7 @@ typedef enum _BURN_ELEVATION_MESSAGE_TYPE
42 BURN_ELEVATION_MESSAGE_TYPE_BURN_CACHE_BEGIN, 42 BURN_ELEVATION_MESSAGE_TYPE_BURN_CACHE_BEGIN,
43 BURN_ELEVATION_MESSAGE_TYPE_BURN_CACHE_COMPLETE, 43 BURN_ELEVATION_MESSAGE_TYPE_BURN_CACHE_COMPLETE,
44 BURN_ELEVATION_MESSAGE_TYPE_BURN_CACHE_SUCCESS, 44 BURN_ELEVATION_MESSAGE_TYPE_BURN_CACHE_SUCCESS,
45 BURN_ELEVATION_MESSAGE_TYPE_BURN_CACHE_FAILURE,
45 BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_PROGRESS, 46 BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_PROGRESS,
46 BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_PROCESS_CANCEL, 47 BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_PROCESS_CANCEL,
47 BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_PROCESS_STARTED, 48 BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_PROCESS_STARTED,
@@ -1792,11 +1793,19 @@ static HRESULT ProcessBurnCacheMessages(
1792 case BURN_ELEVATION_MESSAGE_TYPE_BURN_CACHE_SUCCESS: 1793 case BURN_ELEVATION_MESSAGE_TYPE_BURN_CACHE_SUCCESS:
1793 // read message parameters 1794 // read message parameters
1794 hr = BuffReadNumber64((BYTE*)pMsg->pvData, pMsg->cbData, &iData, &message.success.qwFileSize); 1795 hr = BuffReadNumber64((BYTE*)pMsg->pvData, pMsg->cbData, &iData, &message.success.qwFileSize);
1795 ExitOnFailure(hr, "Failed to read begin cache step."); 1796 ExitOnFailure(hr, "Failed to read success file size.");
1796 1797
1797 message.type = BURN_CACHE_MESSAGE_SUCCESS; 1798 message.type = BURN_CACHE_MESSAGE_SUCCESS;
1798 break; 1799 break;
1799 1800
1801 case BURN_ELEVATION_MESSAGE_TYPE_BURN_CACHE_FAILURE:
1802 // read message parameters
1803 hr = BuffReadNumber((BYTE*)pMsg->pvData, pMsg->cbData, &iData, reinterpret_cast<DWORD*>(&message.failure.cacheStep));
1804 ExitOnFailure(hr, "Failed to read failure cache step.");
1805
1806 message.type = BURN_CACHE_MESSAGE_FAILURE;
1807 break;
1808
1800 case BURN_ELEVATION_MESSAGE_TYPE_PROGRESS_ROUTINE: 1809 case BURN_ELEVATION_MESSAGE_TYPE_PROGRESS_ROUTINE:
1801 fProgressRoutine = TRUE; 1810 fProgressRoutine = TRUE;
1802 break; 1811 break;
@@ -3511,7 +3520,7 @@ static HRESULT CALLBACK BurnCacheMessageHandler(
3511 case BURN_CACHE_MESSAGE_BEGIN: 3520 case BURN_CACHE_MESSAGE_BEGIN:
3512 // serialize message data 3521 // serialize message data
3513 hr = BuffWriteNumber(&pbData, &cbData, pMessage->begin.cacheStep); 3522 hr = BuffWriteNumber(&pbData, &cbData, pMessage->begin.cacheStep);
3514 ExitOnFailure(hr, "Failed to write progress percentage to message buffer."); 3523 ExitOnFailure(hr, "Failed to write cache step to message buffer.");
3515 3524
3516 dwMessage = BURN_ELEVATION_MESSAGE_TYPE_BURN_CACHE_BEGIN; 3525 dwMessage = BURN_ELEVATION_MESSAGE_TYPE_BURN_CACHE_BEGIN;
3517 break; 3526 break;
@@ -3526,10 +3535,18 @@ static HRESULT CALLBACK BurnCacheMessageHandler(
3526 3535
3527 case BURN_CACHE_MESSAGE_SUCCESS: 3536 case BURN_CACHE_MESSAGE_SUCCESS:
3528 hr = BuffWriteNumber64(&pbData, &cbData, pMessage->success.qwFileSize); 3537 hr = BuffWriteNumber64(&pbData, &cbData, pMessage->success.qwFileSize);
3529 ExitOnFailure(hr, "Failed to count of files in use to message buffer."); 3538 ExitOnFailure(hr, "Failed to write file size to message buffer.");
3530 3539
3531 dwMessage = BURN_ELEVATION_MESSAGE_TYPE_BURN_CACHE_SUCCESS; 3540 dwMessage = BURN_ELEVATION_MESSAGE_TYPE_BURN_CACHE_SUCCESS;
3532 break; 3541 break;
3542
3543 case BURN_CACHE_MESSAGE_FAILURE:
3544 // serialize message data
3545 hr = BuffWriteNumber(&pbData, &cbData, pMessage->failure.cacheStep);
3546 ExitOnFailure(hr, "Failed to write cache step to message buffer.");
3547
3548 dwMessage = BURN_ELEVATION_MESSAGE_TYPE_BURN_CACHE_FAILURE;
3549 break;
3533 } 3550 }
3534 3551
3535 // send message 3552 // send message