summaryrefslogtreecommitdiffstats
path: root/server-fn.c
AgeCommit message (Collapse)Author
2011-02-14Sync OpenBSD patchset 848:Tiago Cunha
Set $TMUX without the session when background jobs are run.
2011-01-03Sync OpenBSD patchset 819:Tiago Cunha
Don't reset the activity timer for unattached sessions every second, this screws up the choice of most-recently-used. Instead, break the time update into a little function and do it when the session is attached. Pointed out by joshe@.
2010-12-25Sync OpenBSD patchset 808:Tiago Cunha
server_kill_window can modify the RB tree so don't use RB_FOREACH, fixes crash seen by Dan Harnett.
2010-12-22Sync OpenBSD patchset 806:Tiago Cunha
Store sessions in an RB tree by name rather than a list, this is tidier and allows them to easily be shown sorted in various lists (list-sessions/choose-sessions). Keep a session index which is used in a couple of places internally but make it an ever-increasing number rather than filling in gaps with new sessions.
2010-12-22Sync OpenBSD patchset 802:Tiago Cunha
Use pointer rather than index for the client's last session.
2010-12-11Track the last session for a client and add a flag to switch-client andNicholas Marriott
a key binding (L) to move a client back to its last session.
2010-10-09Sync OpenBSD patchset 770:Tiago Cunha
Set cause when failing due to linking a window to itself, from Martin Pieuchot.
2010-10-09Sync OpenBSD patchset 769:Tiago Cunha
Skip NULL entries in the sessions list when choosing the next session, from Simon Olofsson.
2010-10-09Sync OpenBSD patchset 766:Tiago Cunha
Two new options: - server option "exit-unattached" makes the server exit when no clients are attached, even if sessions are present; - session option "destroy-unattached" destroys a session once no clients are attached to it. These are useful for preventing tmux remaining in the background where it is undesirable and when using tmux as a login shell to keep a limit on new sessions.
2010-08-11Sync OpenBSD patchset 746:Tiago Cunha
Treat trying to link or move to the same window as an error to avoid removing it accidentally.
2010-08-09Sync OpenBSD patchset 741:Tiago Cunha
When changing so that the client passes its stdout and stderr as well as stdin up to the server, I forgot one essential point - the tmux server could now be both the producer and consumer. This happens when tmux is run inside tmux, as well as when piping tmux commands together. So, using stdio(3) was a bad idea - if sufficient data was written, this could block in write(2). When that happened and the server was both producer and consumer, it deadlocks. Change to use libevent bufferevents for the client stdin, stdout and stderr instead. This is trivial enough for output but requires a callback mechanism to trigger when stdin is finished. This relies on the underlying polling mechanism for libevent to work with whatever devices to which the user could redirect stdin, stdout or stderr, hence the change to use poll(2) over kqueue(2) for tmux.
2010-07-02Sync OpenBSD patchset 729:Tiago Cunha
New option, detach-on-destroy, to set what happens to a client when the session it is attached to is destroyed. If on (the default), it is detached; if off, it is switched to the most recently active session.
2010-07-02Sync OpenBSD patchset 728:Tiago Cunha
Use server_destroy_session() for kill-session.
2010-06-22Sync OpenBSD patchset 724:Tiago Cunha
Having a list of winlinks->alerts for each session is stupid, just store the alert flags directly in the winlink itself.
2010-04-18Sync OpenBSD patchset 682:Tiago Cunha
If remain-on-exit is set, both the error callback and a SIGCHLD could destroy the same pane (because the first one doesn't remove it from the list of panes), causing the pane bufferevent to be freed twice. So don't free it if the fd has already been set to -1, from Romain Francoise.
2010-04-06Stupid style nits.Nicholas Marriott
2010-03-27Nuke unused functions.Nicholas Marriott
2010-01-25Sync OpenBSD patchset 615:Tiago Cunha
When a window is destroyed, remove all links to it from each session rather than just the first. Reported by Robin Lee Powell.
2010-01-05Sync OpenBSD patchset 597:Tiago Cunha
Options to set the colour of the pane borders, with different colours for the active pane.
2009-12-26Sync OpenBSD patchset 591:Tiago Cunha
Fix a couple of problems with grouped sessions reported by danh: redraw properly and choose the correct last window after a window is killed.
2009-12-04Sync OpenBSD patchset 581:Tiago Cunha
Massive spaces->tabs and trailing whitespace cleanup, hopefully for the last time now I've configured emacs to make them displayed in really annoying colours...
2009-11-28Sync OpenBSD patchset 567:Tiago Cunha
Remove a couple of unused arguments where possible, and add /* ARGSUSED */ to the rest to reduce lint output.
2009-11-14Sync OpenBSD patchset 535:Tiago Cunha
Destroy panes immediately rather than checking them all every loop.
2009-11-08Sync OpenBSD patchset 504:Tiago Cunha
Use timeout events for the identify and message timers.
2009-11-08Sync OpenBSD patchset 503:Tiago Cunha
Don't reenlist the client imsg event every loop, instead have a small function to it and call it after the event triggers or after a imsg is added.
2009-10-12Sync OpenBSD patchset 388:Tiago Cunha
Set the current window pointer to NULL when killing a winlink that is to be replaced with link-window -k. This prevents it being pushed onto the last window stack and causing a use-after-free. Only took me an hour to find this :-/...
2009-10-11Sync OpenBSD patchset 371:Tiago Cunha
Add "grouped sessions" which have independent name, options, current window and so on but where the linked windows are synchronized (ie creating, killing windows and so on are mirrored between the sessions). A grouped session may be created by passing -t to new-session. Had this around for a while, tested by a couple of people.
2009-10-05Sync OpenBSD patchset 357:Tiago Cunha
Check for already locked/suspended clients in server_lock_client rather than its callers.
2009-09-25Sync OpenBSD patchset 353:Tiago Cunha
New lock-client and lock-session commands to lock an individual client or all clients attached to a session respectively.
2009-09-23Sync OpenBSD patchset 347:Tiago Cunha
Remove the internal tmux locking and instead detach each client and run the command specified by a new option "lock-command" (by default "lock -np") in each client. This means each terminal has to be unlocked individually but simplifies the code and allows the system password to be used to unlock. Note that the set-password command is gone, so it will need to be removed from configuration files, and the -U command line flag has been removed. This is the third protocol version change so again it is best to stop the tmux server before upgrading.
2009-09-20Sync OpenBSD patchset 333:Tiago Cunha
Move some common and untidy code for window link/unlink into generic functions instead of duplicating it in move/link window..
2009-09-20Sync OpenBSD patchset 332:Tiago Cunha
Regularise some fatal messages.
2009-09-13Sync OpenBSD patchset 324:Tiago Cunha
Tidy some common code for destroying sessions into a new function.
2009-09-05Sync OpenBSD patchset 316:Tiago Cunha
Only redraw all clients once when the backoff timer expires rather than every second all the time. Reported by Simon Nicolussi.
2009-09-03- Make it compile on operating systems other than BSD due to OpenBSD patchsetTiago Cunha
308. - While there, remove some duplicate code from the compat header file.
2009-09-03Sync OpenBSD patchset 308:Tiago Cunha
When incorrect passwords are entered, behave similarly to login(1) and backoff for a bit. Based on a diff from martynas@.
2009-09-02Sync OpenBSD patchset 304:Tiago Cunha
Use "Password:" with no space for password prompts and don't display a *s for the password, like pretty much everything else. From martynas@ with minor tweaks by me.
2009-08-31Sync OpenBSD patchset 302:Tiago Cunha
Add a new display-panes command, with two options (display-panes-colour and display-panes-time), which displays a visual indication of the number of each pane.
2009-08-14Sync OpenBSD patchset 243:Tiago Cunha
Switch tmux to use imsg. This is the last major change to make the client-server protocol more resilient and make the protocol versioning work properly. In future, the only things requiring a protocol version bump will be changes in the message structs, and (when both client and server have this change) mixing different versions should nicely report an error message. As a side effect this also makes the code tidier, fixes a problem with the way errors reported during server startup were handled, and supports fd passing (which will be used in future). Looked over by eric@, thanks. Please note that mixing a client with this change with an older server or vice versa may cause tmux to crash or hang - tmux should be completely exited before upgrading.
2009-08-09Sync OpenBSD patchset 231:Tiago Cunha
Infrastructure and commands to manage the environment for processes started within tmux. There is a global environment, copied from the external environment when the server is started and each session has an (initially empty) session environment which overrides it. New commands set-environment and show-environment manipulate or display the environments. A new session option, update-environment, is a space-separated list of variables which are updated from the external environment into the session environment every time a new session is created - the default is DISPLAY.
2009-08-09Sync OpenBSD patchset 225:Tiago Cunha
If there is an error in the configuration file, don't just exit(1) as this can cause the client to hang. Instead, send the error message, then mark the client as bad and start a normal shutdown so the server exits once the error is written. This also allows some code duplicating daemon(3) to be trimmed and logging to begin earlier. Prompted by Theo noticing the behaviour on error wasn't documented.
2009-07-30Sync OpenBSD patchset 196:Tiago Cunha
Rename struct hdrtype to msgtype which is a better name and can be used even when struct hdr disappears.
2009-07-28Sync OpenBSD patchset 181:Tiago Cunha
Make all messages sent between the client and server fixed size. This is the first of two changes to make the protocol more resilient and less sensitive to other changes in the code, particularly with commands. The client now packs argv into a buffer and sends it to the server for parsing, rather than doing it itself and sending the parsed command data. As a side-effect this also removes a lot of now-unused command marshalling code. Mixing a server without this change and a client with or vice versa will cause tmux to hang or crash, please ensure that tmux is entirely killed before upgrading.
2009-07-20Sync OpenBSD patchset 148:Tiago Cunha
Display the number of failed password attempts (if any) when the server is locked. From Tom Doherty.
2009-07-18Make it so using kill-pane to destroy the last pane in a window destroys theNicholas Marriott
window instead of being an error.
2009-07-17A similar for fix for window_choose: don't rely on the callback always beingNicholas Marriott
called to free data, have a separate free callback and call it from the mode cleanup code.
2009-07-17Oops, it is always a good idea to get arguments the right way round.Nicholas Marriott
2009-07-17Memory could be leaked if a second prompt or message appeared while another wasNicholas Marriott
still present, so add a separate prompt free callback and make the _clear function responsible for calling it if necessary (rather than the individual
2009-07-14Need time.h not sys/time.h for time(2).Nicholas Marriott
2009-07-12Add a default-terminal option to set the starting value of $TERM in newNicholas Marriott
windows.