|  | @@ -915,24 +915,27 @@ static void send_http_error(struct mg_connection *conn, int status,
 | 
											
												
													
														|  |    int len = 0;
 |  |    int len = 0;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |    conn->status_code = status;
 |  |    conn->status_code = status;
 | 
											
												
													
														|  | -  buf[0] = '\0';
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -  // Errors 1xx, 204 and 304 MUST NOT send a body
 |  | 
 | 
											
												
													
														|  | -  if (status > 199 && status != 204 && status != 304) {
 |  | 
 | 
											
												
													
														|  | -    len = mg_snprintf(conn, buf, sizeof(buf), "Error %d: %s", status, reason);
 |  | 
 | 
											
												
													
														|  | -    buf[len++] = '\n';
 |  | 
 | 
											
												
													
														|  | 
 |  | +  if (conn->ctx->callbacks.http_error == NULL ||
 | 
											
												
													
														|  | 
 |  | +      conn->ctx->callbacks.http_error(conn, status)) {
 | 
											
												
													
														|  | 
 |  | +    buf[0] = '\0';
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    // Errors 1xx, 204 and 304 MUST NOT send a body
 | 
											
												
													
														|  | 
 |  | +    if (status > 199 && status != 204 && status != 304) {
 | 
											
												
													
														|  | 
 |  | +      len = mg_snprintf(conn, buf, sizeof(buf), "Error %d: %s", status, reason);
 | 
											
												
													
														|  | 
 |  | +      buf[len++] = '\n';
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +      va_start(ap, fmt);
 | 
											
												
													
														|  | 
 |  | +      len += mg_vsnprintf(conn, buf + len, sizeof(buf) - len, fmt, ap);
 | 
											
												
													
														|  | 
 |  | +      va_end(ap);
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +    DEBUG_TRACE(("[%s]", buf));
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -    va_start(ap, fmt);
 |  | 
 | 
											
												
													
														|  | -    len += mg_vsnprintf(conn, buf + len, sizeof(buf) - len, fmt, ap);
 |  | 
 | 
											
												
													
														|  | -    va_end(ap);
 |  | 
 | 
											
												
													
														|  | 
 |  | +    mg_printf(conn, "HTTP/1.1 %d %s\r\n"
 | 
											
												
													
														|  | 
 |  | +              "Content-Length: %d\r\n"
 | 
											
												
													
														|  | 
 |  | +              "Connection: %s\r\n\r\n", status, reason, len,
 | 
											
												
													
														|  | 
 |  | +              suggest_connection_header(conn));
 | 
											
												
													
														|  | 
 |  | +    conn->num_bytes_sent += mg_printf(conn, "%s", buf);
 | 
											
												
													
														|  |    }
 |  |    }
 | 
											
												
													
														|  | -  DEBUG_TRACE(("[%s]", buf));
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -  mg_printf(conn, "HTTP/1.1 %d %s\r\n"
 |  | 
 | 
											
												
													
														|  | -            "Content-Length: %d\r\n"
 |  | 
 | 
											
												
													
														|  | -            "Connection: %s\r\n\r\n", status, reason, len,
 |  | 
 | 
											
												
													
														|  | -            suggest_connection_header(conn));
 |  | 
 | 
											
												
													
														|  | -  conn->num_bytes_sent += mg_printf(conn, "%s", buf);
 |  | 
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  #if defined(_WIN32) && !defined(__SYMBIAN32__)
 |  |  #if defined(_WIN32) && !defined(__SYMBIAN32__)
 |