X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fafb-hreq.c;h=6b7d64be28ef02c7140d2b5f0534aa9895b3f699;hb=f262b0f726ac0577f40525038b779185f144873f;hp=2e74f2d423595cc896bd9d2ff94f786f47d1176c;hpb=97c02cb6f98727942bbbdd38b3ecbc1366894ed6;p=src%2Fapp-framework-binder.git diff --git a/src/afb-hreq.c b/src/afb-hreq.c index 2e74f2d4..6b7d64be 100644 --- a/src/afb-hreq.c +++ b/src/afb-hreq.c @@ -152,6 +152,10 @@ static void afb_hreq_reply_v(struct afb_hreq *hreq, unsigned status, struct MHD_ { char *cookie; const char *k, *v; + + if (hreq->replied != 0) + return; + k = va_arg(args, const char *); while (k != NULL) { v = va_arg(args, const char *); @@ -164,6 +168,14 @@ static void afb_hreq_reply_v(struct afb_hreq *hreq, unsigned status, struct MHD_ } MHD_queue_response(hreq->connection, status, response); MHD_destroy_response(response); + + hreq->replied = 1; + if (hreq->suspended != 0) { + extern void run_micro_httpd(struct afb_hsrv *hsrv); + MHD_resume_connection (hreq->connection); + hreq->suspended = 0; + run_micro_httpd(hreq->hsrv); + } } void afb_hreq_reply(struct afb_hreq *hreq, unsigned status, struct MHD_Response *response, ...) @@ -657,7 +669,7 @@ static void req_send(struct afb_hreq *hreq, char *buffer, size_t size) static ssize_t send_json_cb(json_object *obj, uint64_t pos, char *buf, size_t max) { ssize_t len = stpncpy(buf, json_object_to_json_string(obj)+pos, max) - buf; - return len ? : MHD_CONTENT_READER_END_OF_STREAM; + return len ? : (ssize_t)MHD_CONTENT_READER_END_OF_STREAM; } static void req_reply(struct afb_hreq *hreq, unsigned retcode, const char *status, const char *info, json_object *resp)