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
Newmenus: Add menu timeouts (+ extra bugfix) #21
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
show_menu simply resets CPlayer::newmenu. The menu callback is never fired and the plugin never informed that the menu has been closed. This can result in leaking menu handles. Using "menuselect 10" on the client is not an appropriate solution because it is possible to construct newmenus that contain 10 valid items.
It looks good at a glance - thank you for abstracting a lot of that previous gunk into
|
Good idea. Done. |
Arkshine
added a commit
that referenced
this pull request
May 27, 2014
Newmenus: Add menu timeouts (+ extra bugfix)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This series of patches adds timeouts to newmenus, working similar to those of
show_menu
. Fixes bug 2974.When a menu is acted upon after the specified timeout has run out it will pass a new
MENU_TIMEOUT
status code into the menu handler. Actions are: player disconnect, selecting an item, cancelling/destroying the menu in the plugin, sending a different menu or usingget_user_menu
on a player with an open menu.Just like with the old menus timeouts are not actively polled, and
MENU_TIMEOUT
is not guaranteed to fire directly after the time has run out. Alsoget_user_menu
will detect timeouts and reset the menu flags, which is why it also has to trigger the callback.I discovered another issue when playing around with newmenus. Using the old
show_menu
when a newmenu was opened just resetCPlayer::newmenu
without actually triggering the menu callback. This could result in menu handle leaks and is theoretically even client exploitable. This is also fixed.This is the plugin I used to test the various possible occurances of
MENU_TIMEOUT
and verify that old behavior is not broken.