X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/460b9539a7c15580e41a71bbc0f47ae776238915..e7eb3a2744aa45179daea235800753d3d1955338:/server/state.c diff --git a/server/state.c b/server/state.c index 60fea26..f23c06c 100644 --- a/server/state.c +++ b/server/state.c @@ -1,49 +1,22 @@ /* * This file is part of DisOrder. - * Copyright (C) 2004, 2005 Richard Kettlewell + * Copyright (C) 2004, 2005, 2007, 2008 Richard Kettlewell * - * This program is free software; you can redistribute it and/or modify + * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or + * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA + * along with this program. If not, see . */ -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "event.h" -#include "play.h" -#include "trackdb.h" -#include "state.h" -#include "configuration.h" -#include "log.h" -#include "queue.h" -#include "server.h" -#include "printf.h" -#include "addr.h" +#include "disorder-server.h" static const char *current_unix; static int current_unix_fd; @@ -52,11 +25,12 @@ static struct addrinfo *current_listen_addrinfo; static int current_listen_fd; void quit(ev_source *ev) { + info("shutting down..."); quitting(ev); trackdb_close(); trackdb_deinit(); - info("terminating"); - _exit(0); + info("exiting"); + exit(0); } static void reset_socket(ev_source *ev) { @@ -66,14 +40,10 @@ static void reset_socket(ev_source *ev) { char *name; static const struct addrinfo pref = { - AI_PASSIVE, - PF_INET, - SOCK_STREAM, - IPPROTO_TCP, - 0, - 0, - 0, - 0 + .ai_flags = AI_PASSIVE, + .ai_family = PF_INET, + .ai_socktype = SOCK_STREAM, + .ai_protocol = IPPROTO_TCP, }; /* unix first */ @@ -143,17 +113,21 @@ int reconfigure(ev_source *ev, int reload) { if(reload) { need_another_rescan = trackdb_rescan_cancel(); trackdb_close(); - if(config_read()) + if(config_read(1)) ret = -1; else { /* Tell the speaker it needs to reload its config too. */ speaker_reload(); info("%s: installed new configuration", configfile); } - } - trackdb_open(); + trackdb_open(TRACKDB_NO_UPGRADE); + } else + /* We only allow for upgrade at startup */ + trackdb_open(TRACKDB_CAN_UPGRADE); if(need_another_rescan) - trackdb_rescan(ev); + trackdb_rescan(ev, 1/*check*/, 0, 0); + /* Arrange timeouts for schedule actions */ + schedule_init(ev); if(!ret) { queue_read(); recent_read(); @@ -168,4 +142,3 @@ c-basic-offset:2 comment-column:40 End: */ -/* arch-tag:94e23a75c2ebdf8a11e17ed7b0fd8cb6 */