// Because of POST call multiple time requestApi we need to free POST handle here
static void endRequest (void *cls, struct MHD_Connection *connection, void **con_cls, enum MHD_RequestTerminationCode toe) {
- AFB_HttpPost *posthandle = *con_cls;
+ AFB_PostHandle *posthandle = *con_cls;
// if post handle was used let's free everything
- if (posthandle) {
- if (verbose) fprintf (stderr, "End Post Request UID=%d\n", posthandle->uid);
- free (posthandle->data);
- free (posthandle);
- }
+ if (posthandle != NULL) endPostRequest (posthandle);
}
fprintf(stderr, "Fail to stat file: [%s] error:%s\n", staticfile->path, strerror(errno));
goto abortRequest;
}
-
-
-
-
-
+
// if url is a directory let's add index.html and redirect client
if (S_ISDIR (sbuf.st_mode)) {
close (staticfile->fd); // close directory check for Index
// No trailing '/'. Let's add one and redirect for relative paths to work
if (url [strlen (url) -1] != '/') {
response = MHD_create_response_from_buffer(0,"", MHD_RESPMEM_PERSISTENT);
+ strncpy(staticfile->path, url, sizeof (staticfile->path));
strncat(staticfile->path, "/", sizeof (staticfile->path));
MHD_add_response_header (response, "Location", staticfile->path);
MHD_queue_response (connection, MHD_HTTP_MOVED_PERMANENTLY, response);
if (-1 == (staticfile->fd = open(staticfile->path, O_RDONLY)) || (fstat (staticfile->fd, &sbuf) != 0)) {
fprintf(stderr, "No Index.html in direcory [%s]\n", staticfile->path);
goto abortRequest;
- }
+ }
} else if (! S_ISREG (sbuf.st_mode)) { // only standard file any other one including symbolic links are refused.
close (staticfile->fd); // nothing useful to do with this file
fprintf (stderr, "Fail file: [%s] is not a regular file\n", staticfile->path);
if (session->magic) {
mimetype= magic_descriptor(session->magic, staticfile->fd);
if (mimetype != NULL) MHD_add_response_header (response, MHD_HTTP_HEADER_CONTENT_TYPE, mimetype);
- } else mimetype="Unknown";
+ } else mimetype="application/unknown";
if (verbose) fprintf(stderr, "Serving: [%s] mime=%s\n", staticfile->path, mimetype);
response = MHD_create_response_from_fd(sbuf.st_size, staticfile->fd);