|  | @@ -3479,14 +3479,28 @@ static void
 | 
	
		
			
				|  |  |  write_http_status_line(dir_connection_t *conn, int status,
 | 
	
		
			
				|  |  |                         const char *reason_phrase)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -  char buf[256];
 | 
	
		
			
				|  |  | -  if (!reason_phrase)
 | 
	
		
			
				|  |  | +  char buf[256+RFC1123_TIME_LEN+1];
 | 
	
		
			
				|  |  | +  char *datestring = NULL;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  if (!reason_phrase) { /* bullet-proofing */
 | 
	
		
			
				|  |  |      reason_phrase = "unspecified";
 | 
	
		
			
				|  |  | -  if (tor_snprintf(buf, sizeof(buf), "HTTP/1.0 %d %s\r\n\r\n",
 | 
	
		
			
				|  |  | -      status, reason_phrase) < 0) {
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  if (server_mode(get_options())) {
 | 
	
		
			
				|  |  | +    /* include the Date: header, but only if we're a relay or bridge */
 | 
	
		
			
				|  |  | +    char datebuf[RFC1123_TIME_LEN+1];
 | 
	
		
			
				|  |  | +    format_rfc1123_time(datebuf, time(NULL));
 | 
	
		
			
				|  |  | +    tor_asprintf(&datestring, "Date: %s\r\n", datebuf);
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  if (tor_snprintf(buf, sizeof(buf), "HTTP/1.0 %d %s\r\n%s\r\n",
 | 
	
		
			
				|  |  | +      status, reason_phrase, datestring?datestring:"") < 0) {
 | 
	
		
			
				|  |  |      log_warn(LD_BUG,"status line too long.");
 | 
	
		
			
				|  |  | +    tor_free(datestring);
 | 
	
		
			
				|  |  |      return;
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | +  tor_free(datestring);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    log_debug(LD_DIRSERV,"Wrote status 'HTTP/1.0 %d %s'", status, reason_phrase);
 | 
	
		
			
				|  |  |    connection_buf_add(buf, strlen(buf), TO_CONN(conn));
 | 
	
		
			
				|  |  |  }
 |