Просмотр исходного кода

Use MG_LEGACY_INTERFACE define for deprecated interfaces

bel 10 лет назад
Родитель
Сommit
79ad5cb4b4
2 измененных файлов с 31 добавлено и 10 удалено
  1. 2 0
      include/civetweb.h
  2. 29 10
      src/civetweb.c

+ 2 - 0
include/civetweb.h

@@ -121,6 +121,7 @@ struct mg_callbacks {
 	    -1: initializing ssl fails. */
 	    -1: initializing ssl fails. */
 	int (*init_ssl)(void *ssl_context, void *user_data);
 	int (*init_ssl)(void *ssl_context, void *user_data);
 
 
+#if defined(MG_LEGACY_INTERFACE)
 	/* Called when websocket request is received, before websocket handshake.
 	/* Called when websocket request is received, before websocket handshake.
 	   Return value:
 	   Return value:
 	     0: civetweb proceeds with websocket handshake.
 	     0: civetweb proceeds with websocket handshake.
@@ -146,6 +147,7 @@ struct mg_callbacks {
 	                      int bits,
 	                      int bits,
 	                      char *data,
 	                      char *data,
 	                      size_t data_len);
 	                      size_t data_len);
+#endif /* MG_LEGACY_INTERFACE */
 
 
 	/* Called when civetweb is closing a connection.  The per-context mutex is
 	/* Called when civetweb is closing a connection.  The per-context mutex is
 	   locked when this is invoked.  This is primarily useful for noting when
 	   locked when this is invoked.  This is primarily useful for noting when

+ 29 - 10
src/civetweb.c

@@ -8353,7 +8353,7 @@ static int get_request_handler(struct mg_connection *conn,
 	return 0; /* none found */
 	return 0; /* none found */
 }
 }
 
 
-#if defined(USE_WEBSOCKET)
+#if defined(USE_WEBSOCKET) && defined(MG_LEGACY_INTERFACE)
 static int
 static int
 deprecated_websocket_connect_wrapper(const struct mg_connection *conn,
 deprecated_websocket_connect_wrapper(const struct mg_connection *conn,
                                      void *cbdata)
                                      void *cbdata)
@@ -8607,15 +8607,32 @@ static void handle_request(struct mg_connection *conn)
 /* 8. handle websocket requests */
 /* 8. handle websocket requests */
 #if defined(USE_WEBSOCKET)
 #if defined(USE_WEBSOCKET)
 		if (is_websocket_request) {
 		if (is_websocket_request) {
-			handle_websocket_request(
-			    conn,
-			    path,
-			    !is_script_resource /* could be deprecated global callback */,
-			    deprecated_websocket_connect_wrapper,
-			    deprecated_websocket_ready_wrapper,
-			    deprecated_websocket_data_wrapper,
-			    NULL,
-			    &conn->ctx->callbacks);
+			if (is_script_resource) {
+				/* Websocket Lua script */
+				handle_websocket_request(
+				    conn,
+				    path,
+				    !is_script_resource /* could be deprecated global callback */,
+				    NULL,
+				    NULL,
+				    NULL,
+				    NULL,
+				    &conn->ctx->callbacks);
+			} else {
+#if defined(MG_LEGACY_INTERFACE)
+				handle_websocket_request(
+				    conn,
+				    path,
+				    !is_script_resource /* could be deprecated global callback */,
+				    deprecated_websocket_connect_wrapper,
+				    deprecated_websocket_ready_wrapper,
+				    deprecated_websocket_data_wrapper,
+				    NULL,
+				    &conn->ctx->callbacks);
+#else
+				send_http_error(conn, 404, "%s", "Not found");
+#endif
+			}
 			return;
 			return;
 		} else
 		} else
 #endif
 #endif
@@ -10213,7 +10230,9 @@ static void *worker_thread_run(void *thread_func_param)
 	struct mg_context *ctx = (struct mg_context *)thread_func_param;
 	struct mg_context *ctx = (struct mg_context *)thread_func_param;
 	struct mg_connection *conn;
 	struct mg_connection *conn;
 	struct mg_workerTLS tls;
 	struct mg_workerTLS tls;
+#if defined(MG_LEGACY_INTERFACE)
 	uint32_t addr;
 	uint32_t addr;
+#endif
 
 
 	mg_set_thread_name("worker");
 	mg_set_thread_name("worker");