code: func (g *gossipServiceImpl) Gossip(msg *proto.GossipMessage) {
  	// Educate developers to Gossip messages with the right tags.
  	// See IsTagLegal() for wanted behavior.
  	if err := msg.IsTagLegal(); err != nil {
  		panic(errors.WithStack(err))
  	}
  
  	sMsg := &proto.SignedGossipMessage{
  		GossipMessage: msg,
  	}
  
  	var err error
  	if sMsg.IsDataMsg() {
  		sMsg, err = sMsg.NoopSign()
  	} else {
  		_, err = sMsg.Sign(func(msg []byte) ([]byte, error) {
  			return g.mcs.Sign(msg)
  		})
  	}
  
  	if err != nil {
  		g.logger.Warningf("Failed signing message: %+v", errors.WithStack(err))
  		return
  	}
  
  	if msg.IsChannelRestricted() {
  		gc := g.chanState.getGossipChannelByChainID(msg.Channel)
  		if gc == nil {
  			g.logger.Warning("Failed obtaining gossipChannel of", msg.Channel, "aborting")
  			return
  		}
  		if msg.IsDataMsg() {
  			gc.AddToMsgStore(sMsg)
  		}
  	}
  
  	if g.conf.PropagateIterations == 0 {
  		return
  	}
  	g.emitter.Add(&emittedGossipMessage{
  		SignedGossipMessage: sMsg,
  		filter: func(_ common.PKIidType) bool {
  			return true
  		},
  	})
  }
docs: // Gossip sends a message to other peers to the network