| 
					
				 | 
			
			
				@@ -837,17 +837,34 @@ rep_hist_get_router_stability_doc(time_t now) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   tor_free(last_stability_doc); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   chunks = smartlist_create(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (rep_hist_have_measured_enough_stability()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    smartlist_add(chunks, tor_strdup("we-have-enough-measurements\n")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    smartlist_add(chunks, tor_strdup("we-do-not-have-enough-measurements\n")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   DIGESTMAP_FOREACH(history_map, id, or_history_t *, hist) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     routerinfo_t *ri; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     char dbuf[BASE64_DIGEST_LEN+1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    char header_buf[128]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    char header_buf[512]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     char *info; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     digest_to_base64(dbuf, id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ri = router_get_by_digest(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (ri) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       char *ip = tor_dup_ip(ri->addr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      tor_snprintf(header_buf, sizeof(header_buf), "router %s %s %s\n", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                   dbuf, ri->nickname, ip); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      char tbuf[ISO_TIME_LEN+1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      format_iso_time(tbuf, ri->cache_info.published_on); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      tor_snprintf(header_buf, sizeof(header_buf), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                   "router %s %s %s\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                   "published %s\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                   "relevant-flags%s%s%s\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                   "declared-uptime %ld\n", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                   dbuf, ri->nickname, ip, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                   tbuf, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                   ri->is_running ? "Running " : "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                   ri->is_valid ? "Valid " : "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                   ri->is_hibernating ? "Hibernating " : "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                   ri->uptime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       tor_free(ip); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       tor_snprintf(header_buf, sizeof(header_buf), 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -857,6 +874,7 @@ rep_hist_get_router_stability_doc(time_t now) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     info = rep_hist_format_router_status(hist, now); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (info) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       smartlist_add(chunks, info); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } DIGESTMAP_FOREACH_END; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   result = smartlist_join_strings(chunks, "", 0, NULL); 
			 |