Explorar o código

Added a try/catch at the main request process entry point and send a http 500 response with the error.

mingodad %!s(int64=13) %!d(string=hai) anos
pai
achega
72882d1d22
Modificáronse 2 ficheiros con 22 adicións e 10 borrados
  1. 9 9
      SquiLu-ourbiz/ourbiz.nut
  2. 13 1
      SquiLu-ourbiz/sq-server.nut

+ 9 - 9
SquiLu-ourbiz/ourbiz.nut

@@ -1582,15 +1582,15 @@ Content-Length: %d
 		}
 		}
 
 
 		if (sql){
 		if (sql){
-			try {
+			//try {
 				local stmt = db.prepare(sql);
 				local stmt = db.prepare(sql);
 				//debug_print(sql, "\n", db.errmsg(), "\n")
 				//debug_print(sql, "\n", db.errmsg(), "\n")
 				data = stmt.asSleArray();
 				data = stmt.asSleArray();
 				stmt.finalize();
 				stmt.finalize();
-			}
-			catch(e){
-				return send_http_error_500(request, e);
-			}
+			//}
+			//catch(e){
+			//	return send_http_error_500(request, e);
+			//}
 		}
 		}
 		else if (gmFile.len() > 0){
 		else if (gmFile.len() > 0){
 			data = gmFile.tostring();
 			data = gmFile.tostring();
@@ -1742,11 +1742,11 @@ function ourbizDbAction(request){
 		gmFile.clear();
 		gmFile.clear();
 		local db_manager = db_ourbiz_tables.get(tbl, null);
 		local db_manager = db_ourbiz_tables.get(tbl, null);
 		if (db_manager){
 		if (db_manager){
-			try {
+			//try {
 				result = db_manager.db_action(db, data);
 				result = db_manager.db_action(db, data);
-			} catch(e){
-				return send_http_error_500(request, e);
-			}
+			//} catch(e){
+			//	return send_http_error_500(request, e);
+			//}
 		}
 		}
 		if (result != null){
 		if (result != null){
 			gmFile.clear();
 			gmFile.clear();

+ 13 - 1
SquiLu-ourbiz/sq-server.nut

@@ -63,7 +63,19 @@ local mongoose_start_params = {
 			if(AT_DEV_DBG || !this.get("handle_request", false)) {
 			if(AT_DEV_DBG || !this.get("handle_request", false)) {
 				dofile(APP_CODE_FOLDER + "/sq-server-plugin.nut");
 				dofile(APP_CODE_FOLDER + "/sq-server-plugin.nut");
 			}
 			}
-			return handle_request(request);
+			try {
+				return handle_request(request);
+			}
+			catch(exep){
+				if(AT_DEV_DBG) {
+					foreach(k,v in get_last_stackinfo()) debug_print("\n", k, ":", v);
+					debug_print("\n", exep, "\n")
+				}
+				local response = format("HTTP/1.1 500 Internal Server Error\r\nContent-Type: text/plain; charset=utf-8\r\nContent-Length: %d\r\n\r\n%s", 
+					exep.len(),  exep);
+				request.write(response, response.len());
+				return true;
+			}
 		}
 		}
 		else if(event == "MG_EVENT_LOG"){
 		else if(event == "MG_EVENT_LOG"){
 			//debug_print("\n", request.info.log_message);
 			//debug_print("\n", request.info.log_message);