mirror of
https://github.com/ACINQ/eclair.git
synced 2025-03-15 12:20:13 +01:00
Release 0.3.6-android-phoenix
Merge branch 'android' into android-phoenix
This commit is contained in:
commit
30359d1250
5 changed files with 24 additions and 12 deletions
|
@ -21,7 +21,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>fr.acinq.eclair</groupId>
|
<groupId>fr.acinq.eclair</groupId>
|
||||||
<artifactId>eclair_2.11</artifactId>
|
<artifactId>eclair_2.11</artifactId>
|
||||||
<version>0.3.6-android-phoenix-RC1</version>
|
<version>0.3.6-android-phoenix</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>eclair-core_2.11</artifactId>
|
<artifactId>eclair-core_2.11</artifactId>
|
||||||
|
|
|
@ -30,7 +30,7 @@ import fr.acinq.eclair.payment.{LocalFailure, OutgoingPacket, PaymentFailed, Pay
|
||||||
import fr.acinq.eclair.router.{NodeHop, RouteParams}
|
import fr.acinq.eclair.router.{NodeHop, RouteParams}
|
||||||
import fr.acinq.eclair.wire.Onion.FinalLegacyPayload
|
import fr.acinq.eclair.wire.Onion.FinalLegacyPayload
|
||||||
import fr.acinq.eclair.wire.{Onion, OnionTlv}
|
import fr.acinq.eclair.wire.{Onion, OnionTlv}
|
||||||
import fr.acinq.eclair.{CltvExpiryDelta, LongToBtcAmount, MilliSatoshi, NodeParams, randomBytes32}
|
import fr.acinq.eclair.{CltvExpiryDelta, Features, LongToBtcAmount, MilliSatoshi, NodeParams, randomBytes32}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by PM on 29/08/2016.
|
* Created by PM on 29/08/2016.
|
||||||
|
@ -48,7 +48,8 @@ class PaymentInitiator(nodeParams: NodeParams, router: ActorRef, relayer: ActorR
|
||||||
r.paymentRequest match {
|
r.paymentRequest match {
|
||||||
case Some(invoice) if !invoice.features.supported =>
|
case Some(invoice) if !invoice.features.supported =>
|
||||||
sender ! PaymentFailed(paymentId, r.paymentHash, LocalFailure(new IllegalArgumentException(s"can't send payment: unknown invoice features (${invoice.features})")) :: Nil)
|
sender ! PaymentFailed(paymentId, r.paymentHash, LocalFailure(new IllegalArgumentException(s"can't send payment: unknown invoice features (${invoice.features})")) :: Nil)
|
||||||
case Some(invoice) if invoice.features.allowMultiPart => invoice.paymentSecret match {
|
case Some(invoice) if invoice.features.allowMultiPart && Features.hasFeature(nodeParams.features, Features.BasicMultiPartPayment) =>
|
||||||
|
invoice.paymentSecret match {
|
||||||
case Some(paymentSecret) => r.predefinedRoute match {
|
case Some(paymentSecret) => r.predefinedRoute match {
|
||||||
case Nil => spawnMultiPartPaymentFsm(paymentCfg) forward SendMultiPartPayment(r.paymentHash, paymentSecret, r.targetNodeId, r.amount, finalExpiry, r.maxAttempts, r.assistedRoutes, r.routeParams)
|
case Nil => spawnMultiPartPaymentFsm(paymentCfg) forward SendMultiPartPayment(r.paymentHash, paymentSecret, r.targetNodeId, r.amount, finalExpiry, r.maxAttempts, r.assistedRoutes, r.routeParams)
|
||||||
case hops => spawnPaymentFsm(paymentCfg) forward SendPaymentToRoute(r.paymentHash, hops, Onion.createMultiPartPayload(r.amount, invoice.amount.getOrElse(r.amount), finalExpiry, paymentSecret))
|
case hops => spawnPaymentFsm(paymentCfg) forward SendPaymentToRoute(r.paymentHash, hops, Onion.createMultiPartPayload(r.amount, invoice.amount.getOrElse(r.amount), finalExpiry, paymentSecret))
|
||||||
|
|
|
@ -34,7 +34,7 @@ import fr.acinq.eclair.router.RouteParams
|
||||||
import fr.acinq.eclair.wire.Onion.FinalLegacyPayload
|
import fr.acinq.eclair.wire.Onion.FinalLegacyPayload
|
||||||
import fr.acinq.eclair.wire.{OnionCodecs, OnionTlv}
|
import fr.acinq.eclair.wire.{OnionCodecs, OnionTlv}
|
||||||
import fr.acinq.eclair.{CltvExpiryDelta, LongToBtcAmount, NodeParams, TestConstants, randomKey}
|
import fr.acinq.eclair.{CltvExpiryDelta, LongToBtcAmount, NodeParams, TestConstants, randomKey}
|
||||||
import org.scalatest.{Outcome, fixture}
|
import org.scalatest.{Outcome, Tag, fixture}
|
||||||
import scodec.bits.HexStringSyntax
|
import scodec.bits.HexStringSyntax
|
||||||
|
|
||||||
import scala.concurrent.duration._
|
import scala.concurrent.duration._
|
||||||
|
@ -48,7 +48,8 @@ class PaymentInitiatorSpec extends TestKit(ActorSystem("test")) with fixture.Fun
|
||||||
case class FixtureParam(nodeParams: NodeParams, initiator: TestActorRef[PaymentInitiator], payFsm: TestProbe, multiPartPayFsm: TestProbe, sender: TestProbe)
|
case class FixtureParam(nodeParams: NodeParams, initiator: TestActorRef[PaymentInitiator], payFsm: TestProbe, multiPartPayFsm: TestProbe, sender: TestProbe)
|
||||||
|
|
||||||
override def withFixture(test: OneArgTest): Outcome = {
|
override def withFixture(test: OneArgTest): Outcome = {
|
||||||
val nodeParams = TestConstants.Alice.nodeParams
|
val features = if (test.tags.contains("mpp_disabled")) hex"0a8a" else hex"028a8a"
|
||||||
|
val nodeParams = TestConstants.Alice.nodeParams.copy(features = features)
|
||||||
val (sender, payFsm, multiPartPayFsm) = (TestProbe(), TestProbe(), TestProbe())
|
val (sender, payFsm, multiPartPayFsm) = (TestProbe(), TestProbe(), TestProbe())
|
||||||
class TestPaymentInitiator extends PaymentInitiator(nodeParams, TestProbe().ref, TestProbe().ref, TestProbe().ref) {
|
class TestPaymentInitiator extends PaymentInitiator(nodeParams, TestProbe().ref, TestProbe().ref, TestProbe().ref) {
|
||||||
// @formatter:off
|
// @formatter:off
|
||||||
|
@ -101,6 +102,16 @@ class PaymentInitiatorSpec extends TestKit(ActorSystem("test")) with fixture.Fun
|
||||||
payFsm.expectMsg(SendPayment(paymentHash, e, FinalLegacyPayload(finalAmount, Channel.MIN_CLTV_EXPIRY_DELTA.toCltvExpiry(nodeParams.currentBlockHeight + 1)), 3))
|
payFsm.expectMsg(SendPayment(paymentHash, e, FinalLegacyPayload(finalAmount, Channel.MIN_CLTV_EXPIRY_DELTA.toCltvExpiry(nodeParams.currentBlockHeight + 1)), 3))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
test("forward legacy payment when multi-part deactivated", Tag("mpp_disabled")) { f =>
|
||||||
|
import f._
|
||||||
|
val pr = PaymentRequest(Block.LivenetGenesisBlock.hash, Some(finalAmount), paymentHash, randomKey, "Some MPP invoice", features = Some(Features(VariableLengthOnion.optional, PaymentSecret.optional, BasicMultiPartPayment.optional)))
|
||||||
|
val req = SendPaymentRequest(finalAmount, paymentHash, c, 1, CltvExpiryDelta(42), Some(pr))
|
||||||
|
sender.send(initiator, req)
|
||||||
|
val id = sender.expectMsgType[UUID]
|
||||||
|
payFsm.expectMsg(SendPaymentConfig(id, id, None, paymentHash, c, Upstream.Local(id), Some(pr), storeInDb = true, publishEvent = true))
|
||||||
|
payFsm.expectMsg(SendPayment(paymentHash, c, FinalLegacyPayload(finalAmount, req.finalExpiry(nodeParams.currentBlockHeight)), 1))
|
||||||
|
}
|
||||||
|
|
||||||
test("forward multi-part payment") { f =>
|
test("forward multi-part payment") { f =>
|
||||||
import f._
|
import f._
|
||||||
val pr = PaymentRequest(Block.LivenetGenesisBlock.hash, Some(finalAmount), paymentHash, randomKey, "Some invoice", features = Some(Features(VariableLengthOnion.optional, PaymentSecret.optional, BasicMultiPartPayment.optional)))
|
val pr = PaymentRequest(Block.LivenetGenesisBlock.hash, Some(finalAmount), paymentHash, randomKey, "Some invoice", features = Some(Features(VariableLengthOnion.optional, PaymentSecret.optional, BasicMultiPartPayment.optional)))
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>fr.acinq.eclair</groupId>
|
<groupId>fr.acinq.eclair</groupId>
|
||||||
<artifactId>eclair_2.11</artifactId>
|
<artifactId>eclair_2.11</artifactId>
|
||||||
<version>0.3.6-android-phoenix-RC1</version>
|
<version>0.3.6-android-phoenix</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>eclair-node_2.11</artifactId>
|
<artifactId>eclair-node_2.11</artifactId>
|
||||||
|
|
2
pom.xml
2
pom.xml
|
@ -20,7 +20,7 @@
|
||||||
|
|
||||||
<groupId>fr.acinq.eclair</groupId>
|
<groupId>fr.acinq.eclair</groupId>
|
||||||
<artifactId>eclair_2.11</artifactId>
|
<artifactId>eclair_2.11</artifactId>
|
||||||
<version>0.3.6-android-phoenix-RC1</version>
|
<version>0.3.6-android-phoenix</version>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
|
|
||||||
<modules>
|
<modules>
|
||||||
|
|
Loading…
Add table
Reference in a new issue