mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-06-30 02:21:08 +02:00
rpcserver: allow channels to be opened using --node_id
This commit fixes a slight bug in the interaction between the cli program and the rpcsever itself. With this commit it’s now again possible to create a channel with a peer that’s identified by its peerID, instead of only the pubkey.
This commit is contained in:
18
rpcserver.go
18
rpcserver.go
@ -8,6 +8,7 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"math"
|
"math"
|
||||||
"net"
|
"net"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"sync"
|
"sync"
|
||||||
@ -244,10 +245,19 @@ func (r *rpcServer) OpenChannel(in *lnrpc.OpenChannelRequest,
|
|||||||
"state must be below the local funding amount")
|
"state must be below the local funding amount")
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(roasbeef): make it optional
|
var (
|
||||||
nodepubKey, err := btcec.ParsePubKey(in.NodePubkey, btcec.S256())
|
nodepubKey *btcec.PublicKey
|
||||||
if err != nil {
|
err error
|
||||||
return err
|
)
|
||||||
|
|
||||||
|
// If the node key is set, the we'll parse the raw bytes into a pubkey
|
||||||
|
// object so we can easily manipulate it. If this isn't set, then we
|
||||||
|
// expected the TargetPeerId to be set accordingly.
|
||||||
|
if len(in.NodePubkey) != 0 {
|
||||||
|
nodepubKey, err = btcec.ParsePubKey(in.NodePubkey, btcec.S256())
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Instruct the server to trigger the necessary events to attempt to
|
// Instruct the server to trigger the necessary events to attempt to
|
||||||
|
12
server.go
12
server.go
@ -713,9 +713,17 @@ func (s *server) handleConnectPeer(msg *connectPeerMsg) {
|
|||||||
// request to the funding manager allowing it to initiate the channel funding
|
// request to the funding manager allowing it to initiate the channel funding
|
||||||
// workflow.
|
// workflow.
|
||||||
func (s *server) handleOpenChanReq(req *openChanReq) {
|
func (s *server) handleOpenChanReq(req *openChanReq) {
|
||||||
var targetPeer *peer
|
var (
|
||||||
|
targetPeer *peer
|
||||||
|
pubStr string
|
||||||
|
)
|
||||||
|
|
||||||
pubStr := string(req.targetPubkey.SerializeCompressed())
|
// If the user is targeting the peer by public key, then we'll need to
|
||||||
|
// convert that into a string for our map. Otherwise, we expect them to
|
||||||
|
// target by peer ID instead.
|
||||||
|
if req.targetPubkey != nil {
|
||||||
|
pubStr = string(req.targetPubkey.SerializeCompressed())
|
||||||
|
}
|
||||||
|
|
||||||
// First attempt to locate the target peer to open a channel with, if
|
// First attempt to locate the target peer to open a channel with, if
|
||||||
// we're unable to locate the peer then this request will fail.
|
// we're unable to locate the peer then this request will fail.
|
||||||
|
Reference in New Issue
Block a user