ethstats: cut short unavailable history responses
This commit is contained in:
		@@ -537,6 +537,7 @@ func (s *Service) reportHistory(conn *websocket.Conn, list []uint64) error {
 | 
				
			|||||||
	// Gather the batch of blocks to report
 | 
						// Gather the batch of blocks to report
 | 
				
			||||||
	history := make([]*blockStats, len(indexes))
 | 
						history := make([]*blockStats, len(indexes))
 | 
				
			||||||
	for i, number := range indexes {
 | 
						for i, number := range indexes {
 | 
				
			||||||
 | 
							// Retrieve the next block if it's known to us
 | 
				
			||||||
		var block *types.Block
 | 
							var block *types.Block
 | 
				
			||||||
		if s.eth != nil {
 | 
							if s.eth != nil {
 | 
				
			||||||
			block = s.eth.BlockChain().GetBlockByNumber(number)
 | 
								block = s.eth.BlockChain().GetBlockByNumber(number)
 | 
				
			||||||
@@ -545,13 +546,20 @@ func (s *Service) reportHistory(conn *websocket.Conn, list []uint64) error {
 | 
				
			|||||||
				block = types.NewBlockWithHeader(header)
 | 
									block = types.NewBlockWithHeader(header)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
							// If we do have the block, add to the history and continue
 | 
				
			||||||
		if block != nil {
 | 
							if block != nil {
 | 
				
			||||||
			history[len(history)-1-i] = s.assembleBlockStats(block)
 | 
								history[len(history)-1-i] = s.assembleBlockStats(block)
 | 
				
			||||||
 | 
								continue
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
							// Ran out of blocks, cut the report short and send
 | 
				
			||||||
 | 
							history = history[len(history)-i:]
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	// Assemble the history report and send it to the server
 | 
						// Assemble the history report and send it to the server
 | 
				
			||||||
	log.Trace("Sending historical blocks to ethstats", "first", history[0].Number, "last", history[len(history)-1].Number)
 | 
						if len(history) > 0 {
 | 
				
			||||||
 | 
							log.Trace("Sending historical blocks to ethstats", "first", history[0].Number, "last", history[len(history)-1].Number)
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							log.Trace("No history to send to stats server")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	stats := map[string]interface{}{
 | 
						stats := map[string]interface{}{
 | 
				
			||||||
		"id":      s.node,
 | 
							"id":      s.node,
 | 
				
			||||||
		"history": history,
 | 
							"history": history,
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user