fix error path in file transfer
authorAndy Green <andy.green@linaro.org>
Sun, 10 Feb 2013 12:58:04 +0000 (20:58 +0800)
committerAndy Green <andy.green@linaro.org>
Sun, 10 Feb 2013 16:34:43 +0000 (00:34 +0800)
Signed-off-by: Andy Green <andy.green@linaro.org>
lib/output.c

index 8962f75..8e13d4b 100644 (file)
@@ -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;
                }
        }