X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fwebsock.c;h=f79feb5ec36d733de4a03bedececa275b0fe9a2c;hb=2243a0dd1adc75530bed663db808971789729df3;hp=04661c11411d8a9596e6c3050c4f989f27e24528;hpb=5d248158cc380d0a164fa56b46a7bdede4115407;p=src%2Fapp-framework-binder.git diff --git a/src/websock.c b/src/websock.c index 04661c11..f79feb5e 100644 --- a/src/websock.c +++ b/src/websock.c @@ -303,7 +303,7 @@ static int check_control_header(struct websock *ws) return 1; } -int websock_dispatch(struct websock *ws) +int websock_dispatch(struct websock *ws, int loop) { uint16_t code; loop: @@ -418,16 +418,22 @@ loop: ws->itf->on_continue(ws->closure, FRAME_GET_FIN(ws->header[0]), (size_t) ws->length); + if (!loop) + return 0; break; case OPCODE_TEXT: ws->itf->on_text(ws->closure, FRAME_GET_FIN(ws->header[0]), (size_t) ws->length); + if (!loop) + return 0; break; case OPCODE_BINARY: ws->itf->on_binary(ws->closure, FRAME_GET_FIN(ws->header[0]), (size_t) ws->length); + if (!loop) + return 0; break; case OPCODE_CLOSE: if (ws->length == 0) @@ -447,6 +453,8 @@ loop: websock_pong(ws, NULL, 0); } ws->state = STATE_INIT; + if (!loop) + return 0; break; case OPCODE_PONG: if (ws->itf->on_pong) @@ -454,6 +462,8 @@ loop: else websock_drop(ws); ws->state = STATE_INIT; + if (!loop) + return 0; break; default: goto protocol_error;