diff options
author | Daniel Willmann <daniel@totalueberwachung.de> | 2011-07-17 17:48:18 +0200 |
---|---|---|
committer | Holger Hans Peter Freyther <zecke@selfish.org> | 2011-07-19 17:56:07 +0200 |
commit | c7401c6c23169771822a9f5b98cfea304f1670cf (patch) | |
tree | 682c618fcbf005a29f24fd3369d7597c0070db8e /src/osmo_server_network.c | |
parent | de77386d84f8d9237020bc5d12ef51b754cb7563 (diff) |
server: Register signal handler to reopen logfiles on SIGHUP
Diffstat (limited to 'src/osmo_server_network.c')
-rw-r--r-- | src/osmo_server_network.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/osmo_server_network.c b/src/osmo_server_network.c index be61d03..513ca1f 100644 --- a/src/osmo_server_network.c +++ b/src/osmo_server_network.c @@ -253,6 +253,11 @@ static int read_cb(struct osmo_fd *fd, unsigned int what) conn = fd->data; if (conn->state == STATE_INITIAL) { + if (conn->reopen) { + LOGP(DSERVER, LOGL_INFO, "Reopening log for %s now.\n", conn->name); + restart_pcap(conn); + conn->reopen = 0; + } return read_cb_initial(fd, conn); } else if (conn->state == STATE_DATA) { return read_cb_data(fd, conn); @@ -336,3 +341,18 @@ int osmo_pcap_server_listen(struct osmo_pcap_server *server) return 0; } + +void osmo_pcap_server_reopen(struct osmo_pcap_server *server) +{ + struct osmo_pcap_conn *conn; + LOGP(DSERVER, LOGL_INFO, "Reopening all logfiles.\n"); + llist_for_each_entry(conn, &server->conn, entry) { + /* Write the complete packet out first */ + if (conn->state == STATE_INITIAL) { + restart_pcap(conn); + } else { + LOGP(DSERVER, LOGL_INFO, "Delaying %s until current packet is complete.\n", conn->name); + conn->reopen = 1; + } + } +} |