Selaa lähdekoodia

Modify API to improve consistency

bel2125 4 vuotta sitten
vanhempi
commit
68c0a7c372
3 muutettua tiedostoa jossa 36 lisäystä ja 23 poistoa
  1. 13 6
      include/civetweb.h
  2. 20 16
      src/civetweb.c
  3. 3 1
      src/mod_lua.inl

+ 13 - 6
include/civetweb.h

@@ -643,7 +643,14 @@ CIVETWEB_API void *mg_get_thread_pointer(const struct mg_connection *conn);
 
 
 
 
 /* Set user data for the current connection. */
 /* Set user data for the current connection. */
-/* Note: This function is deprecated. Use the init_connection callback
+/* Note: CivetWeb callbacks use "struct mg_connection *conn" as input
+   when mg_read/mg_write callbacks are allowed in the callback,
+   while "const struct mg_connection *conn" is used as input in case
+   calling mg_read/mg_write is not allowed.
+   Setting the user connection data will modify the connection
+   object represented by mg_connection *, but it will not read from
+   or write to the connection. */
+/* Note: An alternative is to use the init_connection callback
    instead to initialize the user connection data pointer. It is
    instead to initialize the user connection data pointer. It is
    reccomended to supply a pointer to some user defined data structure
    reccomended to supply a pointer to some user defined data structure
    as conn_data initializer in init_connection. In case it is required
    as conn_data initializer in init_connection. In case it is required
@@ -651,7 +658,7 @@ CIVETWEB_API void *mg_get_thread_pointer(const struct mg_connection *conn);
    data pointer in the user defined data structure and modify that
    data pointer in the user defined data structure and modify that
    pointer. In either case, after the init_connection callback, only
    pointer. In either case, after the init_connection callback, only
    calls to mg_get_user_connection_data should be required. */
    calls to mg_get_user_connection_data should be required. */
-CIVETWEB_API void mg_set_user_connection_data(struct mg_connection *conn,
+CIVETWEB_API void mg_set_user_connection_data(const struct mg_connection *conn,
                                               void *data);
                                               void *data);
 
 
 
 
@@ -1429,10 +1436,10 @@ mg_connect_websocket_client_extensions(const char *host,
                                        size_t error_buffer_size,
                                        size_t error_buffer_size,
                                        const char *path,
                                        const char *path,
                                        const char *origin,
                                        const char *origin,
+                                       const char *extensions,
                                        mg_websocket_data_handler data_func,
                                        mg_websocket_data_handler data_func,
                                        mg_websocket_close_handler close_func,
                                        mg_websocket_close_handler close_func,
-                                       void *user_data,
-                                       const char *extensions);
+                                       void *user_data);
 
 
 
 
 /* Connect to a TCP server as a client (can be used to connect to a HTTP server)
 /* Connect to a TCP server as a client (can be used to connect to a HTTP server)
@@ -1487,10 +1494,10 @@ mg_connect_websocket_client_secure_extensions(
     size_t error_buffer_size,
     size_t error_buffer_size,
     const char *path,
     const char *path,
     const char *origin,
     const char *origin,
+    const char *extensions,
     mg_websocket_data_handler data_func,
     mg_websocket_data_handler data_func,
     mg_websocket_close_handler close_func,
     mg_websocket_close_handler close_func,
-    void *user_data,
-    const char *extensions);
+    void *user_data);
 
 
 #if defined(MG_LEGACY_INTERFACE) /* 2019-11-02 */
 #if defined(MG_LEGACY_INTERFACE) /* 2019-11-02 */
 enum { TIMEOUT_INFINITE = -1 };
 enum { TIMEOUT_INFINITE = -1 };

+ 20 - 16
src/civetweb.c

@@ -3781,9 +3781,13 @@ mg_get_thread_pointer(const struct mg_connection *conn)
 
 
 
 
 void
 void
-mg_set_user_connection_data(struct mg_connection *conn, void *data)
+mg_set_user_connection_data(const struct mg_connection *const_conn, void *data)
 {
 {
-	if (conn != NULL) {
+	if (const_conn != NULL) {
+		/* Const cast, since "const struct mg_connection *" does not mean
+		 * the connection object is not modified. Here "const" is used,
+		 * to indicate mg_read/mg_write/mg_send/.. must not be called. */
+		struct mg_connection *conn = (struct mg_connection *)const_conn;
 		conn->request_info.conn_data = data;
 		conn->request_info.conn_data = data;
 	}
 	}
 }
 }
@@ -18172,10 +18176,10 @@ mg_connect_websocket_client_impl(const struct mg_client_options *client_options,
                                  size_t error_buffer_size,
                                  size_t error_buffer_size,
                                  const char *path,
                                  const char *path,
                                  const char *origin,
                                  const char *origin,
+                                 const char *extensions,
                                  mg_websocket_data_handler data_func,
                                  mg_websocket_data_handler data_func,
                                  mg_websocket_close_handler close_func,
                                  mg_websocket_close_handler close_func,
-                                 void *user_data,
-                                 const char *extensions)
+                                 void *user_data)
 {
 {
 	struct mg_connection *conn = NULL;
 	struct mg_connection *conn = NULL;
 
 
@@ -18396,10 +18400,10 @@ mg_connect_websocket_client(const char *host,
 	                                        error_buffer_size,
 	                                        error_buffer_size,
 	                                        path,
 	                                        path,
 	                                        origin,
 	                                        origin,
+	                                        NULL,
 	                                        data_func,
 	                                        data_func,
 	                                        close_func,
 	                                        close_func,
-	                                        user_data,
-	                                        NULL);
+	                                        user_data);
 }
 }
 
 
 
 
@@ -18423,10 +18427,10 @@ mg_connect_websocket_client_secure(
 	                                        error_buffer_size,
 	                                        error_buffer_size,
 	                                        path,
 	                                        path,
 	                                        origin,
 	                                        origin,
+	                                        NULL,
 	                                        data_func,
 	                                        data_func,
 	                                        close_func,
 	                                        close_func,
-	                                        user_data,
-	                                        NULL);
+	                                        user_data);
 }
 }
 
 
 struct mg_connection *
 struct mg_connection *
@@ -18437,10 +18441,10 @@ mg_connect_websocket_client_extensions(const char *host,
                                        size_t error_buffer_size,
                                        size_t error_buffer_size,
                                        const char *path,
                                        const char *path,
                                        const char *origin,
                                        const char *origin,
+                                       const char *extensions,
                                        mg_websocket_data_handler data_func,
                                        mg_websocket_data_handler data_func,
                                        mg_websocket_close_handler close_func,
                                        mg_websocket_close_handler close_func,
-                                       void *user_data,
-                                       const char *extensions)
+                                       void *user_data)
 {
 {
 	struct mg_client_options client_options;
 	struct mg_client_options client_options;
 	memset(&client_options, 0, sizeof(client_options));
 	memset(&client_options, 0, sizeof(client_options));
@@ -18453,10 +18457,10 @@ mg_connect_websocket_client_extensions(const char *host,
 	                                        error_buffer_size,
 	                                        error_buffer_size,
 	                                        path,
 	                                        path,
 	                                        origin,
 	                                        origin,
+	                                        extensions,
 	                                        data_func,
 	                                        data_func,
 	                                        close_func,
 	                                        close_func,
-	                                        user_data,
-	                                        extensions);
+	                                        user_data);
 }
 }
 
 
 struct mg_connection *
 struct mg_connection *
@@ -18466,10 +18470,10 @@ mg_connect_websocket_client_secure_extensions(
     size_t error_buffer_size,
     size_t error_buffer_size,
     const char *path,
     const char *path,
     const char *origin,
     const char *origin,
+    const char *extensions,
     mg_websocket_data_handler data_func,
     mg_websocket_data_handler data_func,
     mg_websocket_close_handler close_func,
     mg_websocket_close_handler close_func,
-    void *user_data,
-    const char *extensions)
+    void *user_data)
 {
 {
 	if (!client_options) {
 	if (!client_options) {
 		return NULL;
 		return NULL;
@@ -18480,10 +18484,10 @@ mg_connect_websocket_client_secure_extensions(
 	                                        error_buffer_size,
 	                                        error_buffer_size,
 	                                        path,
 	                                        path,
 	                                        origin,
 	                                        origin,
+	                                        extensions,
 	                                        data_func,
 	                                        data_func,
 	                                        close_func,
 	                                        close_func,
-	                                        user_data,
-	                                        extensions);
+	                                        user_data);
 }
 }
 
 
 /* Prepare connection data structure */
 /* Prepare connection data structure */

+ 3 - 1
src/mod_lua.inl

@@ -3359,6 +3359,7 @@ mg_prepare_lua_context_script(const char *file_name,
 		            "Error loading file %s: %s\n",
 		            "Error loading file %s: %s\n",
 		            file_name,
 		            file_name,
 		            lua_err_txt);
 		            lua_err_txt);
+		lua_close(L);
 		return 0;
 		return 0;
 	}
 	}
 
 
@@ -3378,10 +3379,11 @@ mg_prepare_lua_context_script(const char *file_name,
 		            "Error running file %s: %s\n",
 		            "Error running file %s: %s\n",
 		            file_name,
 		            file_name,
 		            lua_err_txt);
 		            lua_err_txt);
+		lua_close(L);
 		return 0;
 		return 0;
 	}
 	}
-	/*	lua_close(L); must be done somewhere else */
 
 
+	/*	lua_close(L); must be done somewhere else */
 	return L;
 	return L;
 }
 }