tree b58fb25839786f6d116dbb9fe8e22837abbd2dd7
parent 892337c8e13359bb5c987f7d6295d5d4e0066bcf
author Willy Tarreau <w@1wt.eu> 1400233690 +0200
committer Willy Tarreau <w@1wt.eu> 1400750820 +0200
encoding latin1

REORG: checks: put the functions in the appropriate files !

Checks.c has become a total mess. A number of proxy or server maintenance
and queue management functions were put there probably because they were
used there, but that makes the code untouchable. And that's without saying
that their names does not always relate to what they really do!

So let's do a first pass by moving these ones :
  - set_backend_down()       => backend.c
  - redistribute_pending()   => queue.c:pendconn_redistribute()
  - check_for_pending()      => queue.c:pendconn_grab_from_px()
  - shutdown_sessions        => server.c:srv_shutdown_sessions()
  - shutdown_backup_sessions => server.c:srv_shutdown_backup_sessions()

All of them were moved at once.
