From 9aa775e64efb35e68a9e2730002e290a3de1e9ad Mon Sep 17 00:00:00 2001 From: Conner Fromknecht Date: Tue, 23 Apr 2019 20:05:29 -0700 Subject: [PATCH] watchtower/wtserver/server: only generate addrs for reward sessions --- watchtower/wtserver/create_session.go | 35 +++++++++++++++------------ 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/watchtower/wtserver/create_session.go b/watchtower/wtserver/create_session.go index f00af392..53cc9cf6 100644 --- a/watchtower/wtserver/create_session.go +++ b/watchtower/wtserver/create_session.go @@ -54,22 +54,27 @@ func (s *Server) handleCreateSession(peer Peer, id *wtdb.SessionID, // client. This address is to be included by the client when signing // sweep transactions destined for this tower, if its negotiated output // is not dust. - rewardAddress, err := s.cfg.NewAddress() - if err != nil { - log.Errorf("unable to generate reward addr for %s", id) - return s.replyCreateSession( - peer, id, wtwire.CodeTemporaryFailure, nil, - ) - } + var rewardScript []byte + if req.BlobType.Has(blob.FlagReward) { + rewardAddress, err := s.cfg.NewAddress() + if err != nil { + log.Errorf("Unable to generate reward addr for %s: %v", + id, err) + return s.replyCreateSession( + peer, id, wtwire.CodeTemporaryFailure, nil, + ) + } - // Construct the pkscript the client should pay to when signing justice - // transactions for this session. - rewardScript, err := txscript.PayToAddrScript(rewardAddress) - if err != nil { - log.Errorf("unable to generate reward script for %s", id) - return s.replyCreateSession( - peer, id, wtwire.CodeTemporaryFailure, nil, - ) + // Construct the pkscript the client should pay to when signing + // justice transactions for this session. + rewardScript, err = txscript.PayToAddrScript(rewardAddress) + if err != nil { + log.Errorf("Unable to generate reward script for "+ + "%s: %v", id, err) + return s.replyCreateSession( + peer, id, wtwire.CodeTemporaryFailure, nil, + ) + } } // TODO(conner): create invoice for upfront payment