From: José Bollo Date: Thu, 12 May 2016 09:24:43 +0000 (+0200) Subject: fix https case X-Git-Tag: blowfish_2.0.1~127 X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=commitdiff_plain;h=95b6dc2f61f447783c65f98e2e1e2dda16249073;p=src%2Fapp-framework-binder.git fix https case The HTTPS case is still to be encoded for the websockets. This new test manages the possible case of HTTPS to emit an error message instead of a SEGV. Change-Id: I1fae5d6ad50dfd7eaefdd0f44734cee1a488ccfe Signed-off-by: José Bollo --- diff --git a/src/afb-websock.c b/src/afb-websock.c index 0247aae6..45c65ba7 100644 --- a/src/afb-websock.c +++ b/src/afb-websock.c @@ -118,6 +118,7 @@ static const struct protodef *search_proto(const struct protodef *protodefs, con static int check_websocket_upgrade(struct MHD_Connection *con, const struct protodef *protodefs, void *context, void **websock) { + const union MHD_ConnectionInfo *info; struct MHD_Response *response; const char *connection, *upgrade, *key, *version, *protocols; char acceptval[29]; @@ -163,10 +164,14 @@ static int check_websocket_upgrade(struct MHD_Connection *con, const struct prot } /* create the web socket */ - ws = proto->create(MHD_get_connection_info(con, MHD_CONNECTION_INFO_CONNECTION_FD)->connect_fd, - context, - (void*)MHD_resume_connection, - con); + info = MHD_get_connection_info(con, MHD_CONNECTION_INFO_CONNECTION_FD); + if (info == NULL) { + response = MHD_create_response_from_buffer(0, NULL, MHD_RESPMEM_PERSISTENT); + MHD_queue_response(con, MHD_HTTP_INTERNAL_SERVER_ERROR, response); + MHD_destroy_response(response); + return 1; + } + ws = proto->create(info->connect_fd, context, (void*)MHD_resume_connection, con); if (ws == NULL) { response = MHD_create_response_from_buffer(0, NULL, MHD_RESPMEM_PERSISTENT); MHD_queue_response(con, MHD_HTTP_INTERNAL_SERVER_ERROR, response);