s4-webserver: fixed a talloc reference error on startup failure
authorAndrew Tridgell <tridge@samba.org>
Thu, 12 May 2011 10:38:03 +0000 (12:38 +0200)
committerAndrew Tridgell <tridge@samba.org>
Mon, 6 Jun 2011 02:26:10 +0000 (12:26 +1000)
source4/web_server/web_server.c
source4/web_server/web_server.h

index 74af4f9701f5e2b88305db10c50478e6d256ec91..c79f69a0e29f388e37524ceae57e6775787e1d34 100644 (file)
@@ -248,15 +248,14 @@ static void websrv_send(struct stream_connection *conn, uint16_t flags)
 */
 static void websrv_accept(struct stream_connection *conn)
 {
-       struct task_server *task = talloc_get_type(conn->private_data, struct task_server);
-       struct web_server_data *wdata = talloc_get_type(task->private_data, struct web_server_data);
+       struct web_server_data *wdata = talloc_get_type(conn->private_data, struct web_server_data);
        struct websrv_context *web;
        struct socket_context *tls_socket;
 
        web = talloc_zero(conn, struct websrv_context);
        if (web == NULL) goto failed;
 
-       web->task = task;
+       web->task = wdata->task;
        web->conn = conn;
        conn->private_data = web;
        talloc_set_destructor(web, websrv_destructor);
@@ -312,6 +311,7 @@ static void websrv_task_init(struct task_server *task)
        wdata = talloc_zero(task, struct web_server_data);
        if (wdata == NULL) goto failed;
 
+       wdata->task = task;
        task->private_data = wdata;
 
        if (lpcfg_interfaces(task->lp_ctx) && lpcfg_bind_interfaces_only(task->lp_ctx)) {
index aa4d83c17b5c972f6dc347f7be47e7a72bcf2724..274a54a5c3d5d60cef6ff829c4e590b05f4ddb88 100644 (file)
@@ -29,6 +29,7 @@ struct web_server_data {
        void (*http_process_input)(struct web_server_data *wdata, 
                                   struct websrv_context *web);
        void *private_data;
+       struct task_server *task;
 };
 
 struct http_header {