extern ServerPool *servers;
-StatsThread::StatsThread(const std::string &stats_file, int stats_interval)
+StatsThread::StatsThread(const string &stats_file, int stats_interval)
: stats_file(stats_file),
stats_interval(stats_interval)
{
}
fp = fdopen(fd, "w");
- if (fp == NULL) {
+ if (fp == nullptr) {
log_perror("fdopen");
safe_close(fd);
if (unlink(filename) == -1) {
client_stats = servers->get_client_stats();
for (size_t i = 0; i < client_stats.size(); ++i) {
- fprintf(fp, "%s %d %d %s %d %llu %llu %llu\n",
+ fprintf(fp, "%s %d %d %s %d %llu %llu %llu \"%s\" \"%s\"\n",
client_stats[i].remote_addr.c_str(),
client_stats[i].sock,
0, // Used to be fwmark.
int(now.tv_sec - client_stats[i].connect_time.tv_sec), // Rather coarse.
(long long unsigned)(client_stats[i].bytes_sent),
(long long unsigned)(client_stats[i].bytes_lost),
- (long long unsigned)(client_stats[i].num_loss_events));
+ (long long unsigned)(client_stats[i].num_loss_events),
+ client_stats[i].referer.c_str(),
+ client_stats[i].user_agent.c_str());
}
if (fclose(fp) == EOF) {
log_perror("fclose");