@@ -753,42 +753,45 @@ make_fastly_send_error(fastly::fastly_host_http_send_error_detail &send_error_de
753
753
return res;
754
754
}
755
755
756
- FastlyKVError make_fastly_kv_error (fastly::fastly_kv_error kv_error) {
756
+ FastlyKVError make_fastly_kv_error (fastly::fastly_kv_error kv_error,
757
+ fastly::fastly_host_error host_err) {
757
758
FastlyKVError err;
758
759
switch (kv_error) {
759
760
case KV_ERROR_BAD_REQUEST: {
760
761
err.detail = FastlyKVError::detail::bad_request;
761
- break ;
762
+ return err ;
762
763
}
763
764
case KV_ERROR_INTERNAL_ERROR: {
764
765
err.detail = FastlyKVError::detail::internal_error;
765
- break ;
766
+ return err ;
766
767
}
767
768
case KV_ERROR_NOT_FOUND: {
768
769
err.detail = FastlyKVError::detail::not_found;
769
- break ;
770
+ return err ;
770
771
}
771
772
case KV_ERROR_OK: {
772
773
err.detail = FastlyKVError::detail::ok;
773
- break ;
774
+ return err ;
774
775
}
775
776
case KV_ERROR_PAYLOAD_TOO_LARGE: {
776
777
err.detail = FastlyKVError::detail::payload_too_large;
777
- break ;
778
+ return err ;
778
779
}
779
780
case KV_ERROR_PRECONDITION_FAILED: {
780
781
err.detail = FastlyKVError::detail::precondition_failed;
781
- break ;
782
+ return err ;
782
783
}
783
784
case KV_ERROR_TOO_MANY_REQUESTS: {
784
785
err.detail = FastlyKVError::detail::too_many_requests;
785
- break ;
786
+ return err ;
786
787
}
787
788
case KV_ERROR_UNINITIALIZED: {
788
789
err.detail = FastlyKVError::detail::uninitialized;
789
- break ;
790
+ return err ;
790
791
}
791
792
}
793
+ err.detail = FastlyKVError::detail::host_error;
794
+ err.host_err = host_err;
792
795
return err;
793
796
}
794
797
@@ -2523,8 +2526,9 @@ const std::optional<std::string> FastlyKVError::message() const {
2523
2526
// / The kv-error-detail struct has not been populated.
2524
2527
case uninitialized:
2525
2528
return " Uninitialized." ;
2526
- // / There was no kv error.
2529
+ // / Host error / no error
2527
2530
case ok:
2531
+ case host_error:
2528
2532
return std::nullopt;
2529
2533
// / Bad request.
2530
2534
case bad_request:
@@ -3213,11 +3217,11 @@ FastlyResult<HttpBody, FastlyKVError> KVStorePendingList::wait() {
3213
3217
3214
3218
fastly::fastly_host_error err;
3215
3219
HttpBody body{};
3216
- fastly::fastly_kv_error kv_err;
3220
+ fastly::fastly_kv_error kv_err = KV_ERROR_UNINITIALIZED ;
3217
3221
3218
3222
if (!convert_result (fastly::kv_store_list_wait (this ->handle , &body.handle , &kv_err), &err) ||
3219
3223
kv_err != KV_ERROR_OK || body.handle == INVALID_HANDLE) {
3220
- res.emplace_err (make_fastly_kv_error (kv_err));
3224
+ res.emplace_err (make_fastly_kv_error (kv_err, err ));
3221
3225
} else {
3222
3226
res.emplace (body);
3223
3227
}
@@ -3262,7 +3266,7 @@ KVStorePendingLookup::wait() {
3262
3266
&err) ||
3263
3267
((kv_err != KV_ERROR_OK || body.handle == INVALID_HANDLE) && kv_err != KV_ERROR_NOT_FOUND)) {
3264
3268
cabi_free (metadata_buf);
3265
- res.emplace_err (make_fastly_kv_error (kv_err));
3269
+ res.emplace_err (make_fastly_kv_error (kv_err, err ));
3266
3270
} else if (kv_err == KV_ERROR_NOT_FOUND) {
3267
3271
cabi_free (metadata_buf);
3268
3272
res.emplace (std::nullopt);
@@ -3301,10 +3305,10 @@ Result<KVStorePendingDelete::Handle> KVStore::delete_(std::string_view key) {
3301
3305
FastlyResult<Void, FastlyKVError> KVStorePendingDelete::wait () {
3302
3306
FastlyResult<Void, FastlyKVError> res;
3303
3307
fastly::fastly_host_error err;
3304
- fastly::fastly_kv_error kv_err;
3308
+ fastly::fastly_kv_error kv_err = KV_ERROR_UNINITIALIZED ;
3305
3309
if (!convert_result (fastly::kv_store_delete_wait (this ->handle , &kv_err), &err) ||
3306
3310
kv_err != KV_ERROR_OK) {
3307
- res.emplace_err (make_fastly_kv_error (kv_err));
3311
+ res.emplace_err (make_fastly_kv_error (kv_err, err ));
3308
3312
}
3309
3313
return res;
3310
3314
}
@@ -3371,10 +3375,10 @@ KVStore::insert(std::string_view key, HttpBody body, std::optional<InsertMode> m
3371
3375
FastlyResult<Void, FastlyKVError> KVStorePendingInsert::wait () {
3372
3376
FastlyResult<Void, FastlyKVError> res;
3373
3377
fastly::fastly_host_error err;
3374
- fastly::fastly_kv_error kv_err;
3378
+ fastly::fastly_kv_error kv_err = KV_ERROR_UNINITIALIZED ;
3375
3379
if (!convert_result (fastly::kv_store_insert_wait (this ->handle , &kv_err), &err) ||
3376
3380
kv_err != KV_ERROR_OK) {
3377
- res.emplace_err (make_fastly_kv_error (kv_err));
3381
+ res.emplace_err (make_fastly_kv_error (kv_err, err ));
3378
3382
}
3379
3383
return res;
3380
3384
}
0 commit comments