99
99
100
100
match outgoing_amount {
101
101
Ok ( outgoing_amount) => {
102
- // NOTE: If the f64 amount could not fit in a u64, then the
103
- // typecast makes the outgoing amount 0.
104
- request. prepare . set_amount ( outgoing_amount as u64 ) ;
102
+ let outgoing_amount_u64 =
103
+ if outgoing_amount != 0.0 && outgoing_amount as u64 == 0 {
104
+ std:: u64:: MAX
105
+ } else {
106
+ outgoing_amount as u64
107
+ } ;
108
+ request. prepare . set_amount ( outgoing_amount_u64) ;
105
109
trace ! ( "Converted incoming amount of: {} {} (scale {}) from account {} to outgoing amount of: {} {} (scale {}) for account {}" ,
106
110
request. original_amount, request. from. asset_code( ) , request. from. asset_scale( ) , request. from. id( ) ,
107
111
outgoing_amount, request. to. asset_code( ) , request. to. asset_scale( ) , request. to. id( ) ) ;
@@ -110,11 +114,12 @@ where
110
114
return Box :: new ( err ( RejectBuilder {
111
115
code : ErrorCode :: F08_AMOUNT_TOO_LARGE ,
112
116
message : format ! (
113
- "Could not convert exchange rate from {}:{} to: {}:{}" ,
117
+ "Could not convert exchange rate from {}:{} to: {}:{}. Got incoming amount: {} " ,
114
118
request. from. asset_code( ) ,
115
119
request. from. asset_scale( ) ,
116
120
request. to. asset_code( ) ,
117
121
request. to. asset_scale( ) ,
122
+ request. prepare. amount( ) ,
118
123
)
119
124
. as_bytes ( ) ,
120
125
triggered_by : Some ( & self . ilp_address ) ,
0 commit comments