#endif
#include "afb-method.h"
-#include <afb/afb-req-common.h>
#include "afb-msg-json.h"
#include "afb-context.h"
#include "afb-hreq.h"
const char *extension = strrchr(filename, '.');
if (extension) {
static const char *const known[][2] = {
- { ".js", "text/javascript" },
- { ".html", "text/html" },
- { ".css", "text/css" },
- { ".ico", "image/x-icon"},
- { ".png", "image/png" },
- { ".svg", "image/svg+xml" },
- { ".ttf", "application/x-font-ttf"},
+ { ".js", "text/javascript" },
+ { ".html", "text/html" },
+ { ".css", "text/css" },
+ { ".ico", "image/x-icon"},
+ /* TODO: CHECK ME { ".ico", "image/vnd.microsoft.icon" }, */
+ { ".jpg", "image/jpeg" },
+ { ".png", "image/png" },
+ { ".svg", "image/svg+xml" },
+ { ".ttf", "application/x-font-ttf"},
+ { ".htm", "text/html" },
+ { ".xml", "application/xml" },
+ { ".txt", "text/plain" },
+ { ".wav", "audio/x-wav" },
+ { ".xhtml", "application/xhtml+xml" },
+ { ".xht", "application/xhtml+xml" },
+ { ".gif", "image/gif" },
+ { ".png", "image/png" },
+ { ".mp3", "audio/mpeg" },
{ NULL, NULL }
};
int i = 0;
}
afb_context_disconnect(&hreq->xreq.context);
json_object_put(hreq->json);
- free((char*)hreq->xreq.api);
- free((char*)hreq->xreq.verb);
+ free((char*)hreq->xreq.request.api);
+ free((char*)hreq->xreq.request.verb);
afb_cred_unref(hreq->xreq.cred);
free(hreq);
}
void afb_hreq_addref(struct afb_hreq *hreq)
{
- afb_xreq_addref(&hreq->xreq);
+ afb_xreq_unhooked_addref(&hreq->xreq);
}
void afb_hreq_unref(struct afb_hreq *hreq)
{
- afb_xreq_unref(&hreq->xreq);
+ if (hreq->replied)
+ hreq->xreq.replied = 1;
+ afb_xreq_unhooked_unref(&hreq->xreq);
}
/*
void afb_hreq_call(struct afb_hreq *hreq, struct afb_apiset *apiset, const char *api, size_t lenapi, const char *verb, size_t lenverb)
{
- hreq->xreq.api = strndup(api, lenapi);
- hreq->xreq.verb = strndup(verb, lenverb);
- if (hreq->xreq.api == NULL || hreq->xreq.verb == NULL) {
+ hreq->xreq.request.api = strndup(api, lenapi);
+ hreq->xreq.request.verb = strndup(verb, lenverb);
+ if (hreq->xreq.request.api == NULL || hreq->xreq.request.verb == NULL) {
ERROR("Out of memory");
afb_hreq_reply_error(hreq, MHD_HTTP_INTERNAL_SERVER_ERROR);
} else if (afb_hreq_init_context(hreq) < 0) {
afb_hreq_reply_error(hreq, MHD_HTTP_INTERNAL_SERVER_ERROR);
} else {
- afb_xreq_addref(&hreq->xreq); /* TODO check if needed */
+ afb_xreq_unhooked_addref(&hreq->xreq);
afb_xreq_process(&hreq->xreq, apiset);
}
}