All pastes #358 Raw Edit

client.c

public c v1 · immutable
#358 ·published 2004-07-29 02:50 UTC
rendered paste body
#include "pstatsd.h"int client(int c) {  time_t time, firsthit, lasthit;  char *query = NULL, *session = NULL, *ip = NULL, *useragent = NULL;  int session_len, query_len, ip_len, useragent_len;  while(1) {    /* Allocate memory and recieve data */    if(read(c, (char *)&time, sizeof(time)) == -1) break;    if(read(c, (char *)&firsthit, sizeof(firsthit)) == -1) break;    if(read(c, (char *)&lasthit, sizeof(lasthit)) == -1) break;    if(read(c, (char *)&ip_len, sizeof(ip_len)) == -1) break;    ip = (char *)realloc(ip, ip_len+1);    if(!ip) break;    memset(ip, 0, ip_len+1);    if(read(c, (char *)ip, ip_len) == -1) break;    if(read(c, (char *)&useragent_len, sizeof(useragent_len)) == -1) break;    useragent = (char *)realloc(useragent, useragent_len+1);    if(!useragent) break;    memset(useragent, 0, useragent_len+1);    if(read(c, (char *)useragent, useragent_len) == -1) break;    if(read(c, (char *)&session_len, sizeof(session_len)) == -1) break;    session = (char *)realloc(session, session_len+1);    if(!session) return 1;    memset(session, 0, session_len+1);    if(read(c, (char *)session, session_len) == -1) break;    if(read(c, (char *)&query_len, sizeof(query_len)) == -1) break;    query = (char *)realloc(query, query_len+1);    if(!query) free(session);    memset(query, 0, query_len+1);    if(read(c, (char *)query, query_len) == -1) break;    /* Parse the hit */    parse(time, firsthit, lasthit, ip, ip_len, useragent, useragent_len, session, session_len, query, query_len);  }  /* Clean up */  close(c);  free(ip);  free(useragent);  free(session);  free(query);  /* exit */  pthread_detach(pthread_self());  pthread_exit(NULL);  return 0;}