fixed coredump when there are no sensors
[psensor.git] / src / server / server.c
index 95998c8..7e9736c 100644 (file)
@@ -193,8 +193,9 @@ create_response_api(const char *nurl, const char *method, unsigned int *rp_code)
        if (page) {
                *rp_code = MHD_HTTP_OK;
 
-               resp = MHD_create_response_from_data(strlen(page), page,
-                                                    MHD_YES, MHD_NO);
+               resp = MHD_create_response_from_buffer(strlen(page),
+                                                      page,
+                                                      MHD_RESPMEM_MUST_FREE);
 
                MHD_add_response_header(resp, MHD_HTTP_HEADER_CONTENT_TYPE,
                                        "application/json");
@@ -224,8 +225,8 @@ static struct MHD_Response *create_response_file(const char *nurl,
 
                        if (!st.st_size) {
                                fclose(file);
-                               return MHD_create_response_from_data
-                                       (0, NULL, MHD_NO, MHD_NO);
+                               return MHD_create_response_from_buffer
+                                       (0, NULL, 0);
                        }
 
                        return MHD_create_response_from_callback
@@ -275,10 +276,9 @@ create_response(const char *nurl, const char *method, unsigned int *rp_code)
        page = strdup(PAGE_NOT_FOUND);
        *rp_code = MHD_HTTP_NOT_FOUND;
 
-       return MHD_create_response_from_data(strlen(page),
-                                            page,
-                                            MHD_YES,
-                                            MHD_NO);
+       return MHD_create_response_from_buffer(strlen(page),
+                                              page,
+                                              MHD_RESPMEM_MUST_FREE);
 }
 
 static int cbk_http_request(void *cls,
@@ -301,7 +301,8 @@ static int cbk_http_request(void *cls,
 
        if (&dummy != *ptr) {
                /* The first time only the headers are valid, do not
-                  respond in the first round... */
+                * respond in the first round...
+                */
                *ptr = &dummy;
                return MHD_YES;
        }
@@ -423,7 +424,7 @@ int main(int argc, char *argv[])
        server_data.cpu_usage = create_cpu_usage_sensor(600);
 #endif
 
-       if (!*server_data.sensors)
+       if (!server_data.sensors || !*server_data.sensors)
                log_err(_("No sensors detected."));
 
        d = MHD_start_daemon(MHD_USE_THREAD_PER_CONNECTION,