Skip to content
This repository has been archived by the owner on Sep 9, 2022. It is now read-only.

Commit

Permalink
Merge pull request #131 from libp2p/simplify-handle-reserve
Browse files Browse the repository at this point in the history
simplify generation of reservations
  • Loading branch information
marten-seemann authored Jul 10, 2021
2 parents 9da0b93 + 958f509 commit f612dea
Showing 1 changed file with 7 additions and 10 deletions.
17 changes: 7 additions & 10 deletions v2/relay/relay.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ func (r *Relay) handleStream(s network.Stream) {

switch msg.GetType() {
case pbv2.HopMessage_RESERVE:
r.handleReserve(s, &msg)
r.handleReserve(s)

case pbv2.HopMessage_CONNECT:
r.handleConnect(s, &msg)
Expand All @@ -130,7 +130,7 @@ func (r *Relay) handleStream(s network.Stream) {
}
}

func (r *Relay) handleReserve(s network.Stream, msg *pbv2.HopMessage) {
func (r *Relay) handleReserve(s network.Stream) {
defer s.Close()

p := s.Conn().RemotePeer()
Expand Down Expand Up @@ -175,15 +175,12 @@ func (r *Relay) handleReserve(s network.Stream, msg *pbv2.HopMessage) {

log.Debugf("reserving relay slot for %s", p)

err := r.writeResponse(s, pbv2.Status_OK, r.makeReservationMsg(p, expire), r.makeLimitMsg(p))
if err != nil {
s.Reset()
// Delivery of the reservation might fail for a number of reasons.
// For example, the stream might be reset or the connection might be closed before the reservation is received.
// In that case, the reservation will just be garbage collected later.
if err := r.writeResponse(s, pbv2.Status_OK, r.makeReservationMsg(p, expire), r.makeLimitMsg(p)); err != nil {
log.Debugf("error writing reservation response; retracting reservation for %s", p)
r.mx.Lock()
delete(r.rsvp, p)
r.ipcs.RemoveReservation(p)
r.host.ConnManager().UntagPeer(p, "relay-reservation")
r.mx.Unlock()
s.Reset()
}
}

Expand Down

0 comments on commit f612dea

Please sign in to comment.