downloadFile error 406 issue

Post Reply
Sanaki
Posts: 110
Joined: Wed Mar 09, 2011 1:30 am

downloadFile error 406 issue

Post by Sanaki »

When attempting to download an image using downloadFile from my personal server, it's throwing an error 406 message at me ("Not Acceptable", for those unfamiliar). Fetching the same file from a browser works fine. I grabbed the communication chain with wireshark to see what's going awry, but I can't see anything obviously wrong there. Theoretically error 406 should mean the accept header sent by Mudlet is wrong. Granted, I'm years out of practice when it comes to dealing with apache, TCP, PHP, etc, but even still I'm wondering if someone has insight. I noticed Akaya had the same issue here, which was left unanswered.

EDIT: I removed a bit of information here because I've identified the issue, but have no simple solution. This is caused by apache Mod_Security rule 900095, "Bad UA :: Fake Mozilla Agent". This will be an issue on any server using the boilerplate Mod_Security rules, and that includes irreparably most shared hosting providers. Mudlet identifies itself with the full UA string "Mozilla/5.0". Updating this to a more accurate UA would appear to fix the issue, though I'm unsure what that would be. Is this something that can't be adjusted for some reason?

phasma
Posts: 191
Joined: Sat Aug 03, 2013 7:00 pm
Discord: phasma#4694

Re: downloadFile error 406 issue

Post by phasma »

Are you forcing Apache to use https only? That can cause this issue.

Sanaki
Posts: 110
Joined: Wed Mar 09, 2011 1:30 am

Re: downloadFile error 406 issue

Post by Sanaki »

No, this is http and it's a response to Mudlet using a fake UserAgent string to identify itself. Technically the 406 isn't an error, it's a perfectly rational response to an unknown browser that's blatantly lying about what it is.

Sanaki
Posts: 110
Joined: Wed Mar 09, 2011 1:30 am

Re: downloadFile error 406 issue

Post by Sanaki »

I seem to have found the solution, though I have yet to test it. In the source, in TLuaInterpreter.cpp, I believe inserting this line after line 8082 would solve our issue completely:

Code: Select all

request.setRawHeader("User-Agent", "Mudlet 2.1");
Now, that UA string can be changed to anything really, as long as it's something that -isn't- "Mozilla/5.0", which is what it defaults to. Realistically, if there's a variable accessible from there that contains the current Mudlet version or such, that would probably be best, but if so I have no idea where to find it. Or it could just be "Mudlet".

If someone's willing to test this, please let me know. The domain I'm using that these issues occurred on originally for me is www.fuzzy-dice.net.

User avatar
SlySven
Posts: 1023
Joined: Mon Mar 04, 2013 3:40 pm
Location: Deepest Wiltshire, UK
Discord: SlySven#2703

Re: downloadFile error 406 issue

Post by SlySven »

The next release of Mudlet which is due soon does have some code that ensures that the variable that you describe hypothetically is used across the board (and will be available to user Lua scripts with: getMudletVersion({|"major"|"minor"|"revision"|"build"|"string"|"table"}) ) though, this was not a case I was aware of until now. It can be looked at, but in the meantime I've logging this in the bugtracker against bug number 1366781.

Jor'Mox
Posts: 1146
Joined: Wed Apr 03, 2013 2:19 am

Re: downloadFile error 406 issue

Post by Jor'Mox »

So, by soon, are we talking... sometime in the next six months? :o

User avatar
Vadi
Posts: 5042
Joined: Sat Mar 14, 2009 3:13 pm

Re: downloadFile error 406 issue

Post by Vadi »

Yes. :)

Post Reply