From 6ae42a6d324eddf4b03afca1939dc612cc2ebac9 Mon Sep 17 00:00:00 2001 From: Andy Green Date: Sun, 10 Feb 2013 20:58:04 +0800 Subject: [PATCH] fix error path in file transfer Signed-off-by: Andy Green --- lib/output.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/output.c b/lib/output.c index 8962f75..8e13d4b 100644 --- a/lib/output.c +++ b/lib/output.c @@ -492,10 +492,8 @@ int libwebsockets_serve_http_file_fragment(struct libwebsocket_context *context, wsi->u.http.filepos += n; } - if (n < 0) { - libwebsocket_close_and_free_session(context, wsi, LWS_CLOSE_STATUS_NOSTATUS); - return 1; - } + if (n < 0) + return 1; /* caller will close */ if (n < sizeof(context->service_buffer) || wsi->u.http.filepos == wsi->u.http.filelen) { wsi->state = WSI_STATE_HTTP; @@ -503,7 +501,8 @@ int libwebsockets_serve_http_file_fragment(struct libwebsocket_context *context, if (wsi->protocol->callback) ret = user_callback_handle_rxflow(wsi->protocol->callback, context, wsi, LWS_CALLBACK_HTTP_FILE_COMPLETION, wsi->user_space, NULL, 0); - return ret; + /* user_callback_handle_rxflow did any close already */ + return 0; } } -- 2.7.4