GMS-SA / roundcube-advanced-search

Advanced Search Plugin for Roundcube
16 stars 19 forks source link

Searches that return many records fail when updating flags #19

Open ghost opened 10 years ago

ghost commented 10 years ago

I am using apache, and requests are limited to 8190 bytes (coded in the source): http://httpd.apache.org/docs/2.2/mod/core.html#limitrequestline

Lets say you have a search return 5000 results. Depending on RoundCube's refresh interval, it sends a "check-recent" or "list" or "refresh" message back, to update the list. However, the request that is sent, via GET, back to apache exceeds 8190 bytes and apache returns a HTTP 414 (request URI too long).

The request looks something like: GET /mail/?_task=mail&_mbox=Folder1%2FFolder2%2FFolder3%2FFolder4&_folderlist=1&search=advanced_search_active&_list=1&_uids=1234__MB__afafafafafafafafafafafaf%2C1235__MB__fefefefefefefefefefefefef%2c......

and the number__MB__msgID part repeats for however many message there were. It looks like Advanced Search is sending a list of every message UID that it wants to refresh instead of just resending the search query.

I believe one fix is to change RoundCube the js/app.js code in the function this.list_mailbox_remote = function(mbox, page, post_data) to use this.http_post instead of this.http_request. But this still ends up sending megabytes of data back on every refresh via the list action. I am curious if you believe that there is a better way for Advanced Search to handle refreshing the message list.