Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Image preview in multpart/form-data breaks the app #1828

Open
petersamokhin opened this issue Oct 25, 2023 · 9 comments
Open

Image preview in multpart/form-data breaks the app #1828

petersamokhin opened this issue Oct 25, 2023 · 9 comments
Assignees
Labels
bug Something isn't working

Comments

@petersamokhin
Copy link

Description

When you upload a multipart request where one part is an image, ProxyMan tries to preview it (great feature btw!).
However, if the image part is not a valid image (or even if valid but maybe not supported by the preview tool you use), the app becomes unresponsive. Only "Force Quit Application" helps

Steps to Reproduce

  1. Make a regular multipart/form-data request
  2. Add a byte array part with content-type for some image (e.g. image/jpeg)
  3. Try to open "multipart" tab of the request
  4. (issue happens, app is unresponsive)

Current Behavior

Explained above, screenshot here:

image

Expected Behavior

Preview can be omitted, or an error text shown — but not the app frozen.
For me, it is enough to "export" the "part" as a file, no need for preview at all

Environment

Actually, happens for a few versions already + different macOS versions (on Sonoma too). Managed to file an issue only now :)

  • App version:Version 4.13.0 (49400)
  • macOS version: macOS Ventura 13.6 (22G120)
@petersamokhin petersamokhin added the bug Something isn't working label Oct 25, 2023
@NghiaTranUIT NghiaTranUIT self-assigned this Oct 26, 2023
@NghiaTranUIT NghiaTranUIT added this to the Proxyman 4.14.0 milestone Oct 26, 2023
@NghiaTranUIT
Copy link
Member

May I ask how big the Image is? I assume it's big so Proxyman takes a lot of time to process on the main thread -> causes the app hangs 🤔

It'd be nice if you export the Request/Response (Right-click -> Export -> ProxymanLog) and share it with us at support@proxyman.io ?

@petersamokhin
Copy link
Author

@NghiaTranUIT unfortunately I can't share the request 🙂 but the image is small, e.g. latest one I tested is 199 KB. Also, the app never unfreezes, waiting doesn't help

@NghiaTranUIT
Copy link
Member

@petersamokhin is it 100% reproducible?

May I ask what the Request/Response Body size? (You can get this data from the Request or Response column or from the Content-Length).

Multiparts works fine on my end, including images (< 1mb) and some JSON text.

@petersamokhin
Copy link
Author

petersamokhin commented Oct 26, 2023

@NghiaTranUIT yep, 100% reproducible every single time for me 😅

Content-Length: 199877 (most of the size is the mutlipart part). If I click on "multipart" tab instead of "raw", the app will be stuck forever
image

The next request with video (which works fine btw) is bigger. Export works with no problems, even for much bigger files (up to 100 mb at least)
Content-Length: 757946

The images I upload are JPEG but theoretically may be "worse" than regular images (maybe no EXIF and worse quality), still good for Finder "Preview" and QuickLook though. My assumption to investigate would be to check any steps that interact with the image itself, parse it or try to display, and put try/catch + resource/time limitations ther

@NghiaTranUIT
Copy link
Member

@petersamokhin can you try this Beta and let me know the result 👍 https://download.proxyman.io/beta/Proxyman_4.13.0_Improve_performance_Multiparts.dmg

Change log

  • Optimize the Raw Tab when displaying the Raw Multipparts data -> Prevent freeze app
  • Upgrade to the latest multipart-kit that fix some internal issues

@petersamokhin
Copy link
Author

petersamokhin commented Oct 27, 2023

@NghiaTranUIT checked just now — no difference. Once I click on the "Multipart" tab in the request preview, the whole app freezes forever. So, the "Multipart" tab needs to be optimized, not "Raw" :)

image

@NghiaTranUIT
Copy link
Member

May I ask: what macbook model are you using? 🤔

@petersamokhin
Copy link
Author

@NghiaTranUIT Apple M1 Pro 32GB, 16-inch, 2021

@NghiaTranUIT
Copy link
Member

@petersamokhin I'm not sure why but I can't reproduce the freeze issue on Multipart Tab 😿 . Can you try again on this Beta build: https://proxyman.s3.us-east-2.amazonaws.com/beta/Proxyman_4.13.0_Prevent_rendering_Multiparts_twice.dmg

  • From what I investigated, the Multipart data is processed in the background and it doesn't block the UI. Even though the file is 20 MB, it might take 2-3 seconds to process, but never causes the hang issue.
  • The only hang issue is when switching to the Raw Tab -> Proxyman tries to display all raw strings on NSTextView, which causes worse performance -> It's fixed on the previous beta build by truncating the exceeded body.
  • If it doesn't fix you, can you try to export the request and share it with us via support@proxyman.io You can redact sensitive data. I'd appreciate it.

Video

CleanShot.2023-10-28.at.09.54.56.mp4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants