goto abortRequest;
}
- 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);
- const char *errorstr = "<html><body>Alsa-Json-Gateway Invalid file type</body></html>";
- response = MHD_create_response_from_buffer (strlen (errorstr),
- (void *) errorstr, MHD_RESPMEM_PERSISTENT);
- MHD_queue_response (connection, MHD_HTTP_INTERNAL_SERVER_ERROR, response);
- goto sendRequest;
- }
+
+
+
// if url is a directory let's add index.html and redirect client
if (S_ISDIR (sbuf.st_mode)) {
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);
+ const char *errorstr = "<html><body>Application Framework Binder Invalid file type</body></html>";
+ response = MHD_create_response_from_buffer (strlen (errorstr),
+ (void *) errorstr, MHD_RESPMEM_PERSISTENT);
+ MHD_queue_response (connection, MHD_HTTP_INTERNAL_SERVER_ERROR, response);
+ goto sendRequest;
+ }
// https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching?hl=fr
// ftp://ftp.heanet.ie/disk1/www.gnu.org/software/libmicrohttpd/doxygen/dc/d0c/microhttpd_8h.html
char *requestdir, *requesturl;
// default search for file is rootdir base
- requestdir = session->config->rootdir;
- requesturl=url;
+ requestdir= session->config->rootdir;
+ requesturl=(char*)url;
// Check for optional aliases
for (idx=0; session->config->aliasdir[idx].url != NULL; idx++) {
if (0 == strncmp(url, session->config->aliasdir[idx].url, session->config->aliasdir[idx].len)) {
requestdir = session->config->aliasdir[idx].path;
- requesturl=&url[session->config->aliasdir[idx].len];
+ requesturl=(char*)&url[session->config->aliasdir[idx].len];
break;
}
}
#include <signal.h>
#include <getopt.h>
-static sigjmp_buf exitpoint; // context save for set/longjmp
-static sigjmp_buf restartpoint; // context save for set/longjmp
+static sigjmp_buf exitPoint; // context save for set/longjmp
/*----------------------------------------------------------
| printversion
static AFB_aliasdir aliasdir[MAX_ALIAS];
static int aliascount=0;
-/*----------------------------------------------------------
- | signalQuit
- | return to intitial exitpoint on order to close backend
- | before exiting.
- +--------------------------------------------------------- */
-void signalQuit (int signum)
-{
- if (verbose) printf ("INF:signalQuit received signal to quit\n");
- longjmp (exitpoint, signum);
-}
-
/*----------------------------------------------------------
| timeout signalQuit
|
+--------------------------------------------------------- */
-void signalFail (int signum) {
+void signalQuit (int signum) {
sigset_t sigset;
sigaddset (&sigset, SIGABRT);
sigprocmask (SIG_UNBLOCK, &sigset, 0);
- fprintf (stderr, "%s ERR:getAllBlock acquisition timeout\n",configTime());
- syslog (LOG_ERR, "Daemon fail and restart [please report bug]");
- longjmp (restartpoint, signum);
+ fprintf (stderr, "%s ERR:Received signal quit\n",configTime());
+ syslog (LOG_ERR, "Daemon got kill3 & quit [please report bug]");
+ longjmp (exitPoint, signum);
}
static void listenLoop (AFB_session *session) {
AFB_error err;
- if (signal (SIGABRT, signalFail) == SIG_ERR) {
+ if (signal (SIGABRT, signalQuit) == SIG_ERR) {
fprintf (stderr, "%s ERR: main fail to install Signal handler\n", configTime());
return;
}
AFB_config cliconfig; // temp structure to store CLI option before file config upload
// ------------- Build session handler & init config -------
- session = configInit ();
+ session = configInit ();
memset(&cliconfig,0,sizeof(cliconfig));
memset(&aliasdir ,0,sizeof(aliasdir));
cliconfig.aliasdir = aliasdir;
aliascount++;
} else {
fprintf(stderr, "Too many aliases [max:%s] %s ignored\n", optarg, MAX_ALIAS-1);
- }
-
-
+ }
break;
case SET_SMACK:
return (-1);
}
- // save exitpoint context when returning from longjmp closeSession and exit
- status = setjmp (exitpoint); // return !+ when coming from longjmp
+ // save exitPoint context when returning from longjmp closeSession and exit
+ status = setjmp (exitPoint); // return !+ when coming from longjmp
if (status != 0) {
if (verbose) printf ("INF:main returning from longjump after signal [%d]\n", status);
closeSession (session);
// let's run this program with a low priority
status=nice (20);
-
// ------------------ Finaly Process Commands -----------------------------
-
-
-
// if --save then store config on disk upfront
if (session->configsave) configStoreFile (session);
if (session->forceexit) exit (0);