All pastes #353 Raw Edit

loghit.c

public c v1 · immutable
#353 ·published 2004-07-29 01:19 UTC
rendered paste body
#include "mod_pstats.h"int log_hit(request_rec *r, time_t now, time_t firsthit, time_t lasthit, char *ip, char *useragent, char *session, char *query) {  struct sockaddr_in sai;  int s, i, len, size;  char *packet;  /* Make a connection to the daemon */  s = make_connection();  if(s == -1) return log_file_hit(r, now, firsthit, lasthit, ip, useragent, session, query);  /* Allocate a packet big enough to hold everything */  size = (sizeof(time_t) * 3) + (sizeof(int) * 4) + pr_strlen(ip) + pr_strlen(useragent) + pr_strlen(session) + pr_strlen(query);  packet = apr_palloc(r->pool, size);  /* Fill the packet */  i = 0;  memcpy(packet+i, &now, sizeof(now)); i += sizeof(now);  memcpy(packet+i, &firsthit, sizeof(firsthit)); i += sizeof(firsthit);  memcpy(packet+i, &lasthit, sizeof(lasthit)); i += sizeof(lasthit);  len = pr_strlen(ip);  memcpy(packet+i, &len, sizeof(len)); i += sizeof(len);  memcpy(packet+i, ip, len); i += len;  len = pr_strlen(useragent);  memcpy(packet+i, &len, sizeof(len)); i += sizeof(len);  memcpy(packet+i, useragent, len); i += len;  len = pr_strlen(session);  memcpy(packet+i, &len, sizeof(len)); i += sizeof(len);  memcpy(packet+i, session, len); i += len;  len = pr_strlen(query);  memcpy(packet+i, &len, sizeof(len)); i += sizeof(len);  memcpy(packet+i, query, len);  /* Send the packet to the daemon */  send(s, packet, size, 0);  /* Close the socket and return */  close(s);  return 0;}