diff options
| author | Philip M. Gollucci <pgollucci@FreeBSD.org> | 2010-09-06 19:29:52 +0000 |
|---|---|---|
| committer | Philip M. Gollucci <pgollucci@FreeBSD.org> | 2010-09-06 19:29:52 +0000 |
| commit | 886b0e93253ec03a29b2e59c8eaf932e88045fa1 (patch) | |
| tree | 525e2982e925ebc54277ced4f9527d7468ae3391 /www/mod_log_sql2-dtc/files/patch-mod_log_sql.c | |
| parent | - Back devel release. (diff) | |
- Fix bytes_sent bug [1]
- Fix a apache scoreboard bug
PR: ports/150296, ports/121134
Submitted by: Charles Sprickman <css@morefoo.com>
Obtained from: Fernando Kiernan, http://www.imagenesdigitales.com.ar/ [1]
Diffstat (limited to 'www/mod_log_sql2-dtc/files/patch-mod_log_sql.c')
| -rw-r--r-- | www/mod_log_sql2-dtc/files/patch-mod_log_sql.c | 46 |
1 files changed, 33 insertions, 13 deletions
diff --git a/www/mod_log_sql2-dtc/files/patch-mod_log_sql.c b/www/mod_log_sql2-dtc/files/patch-mod_log_sql.c index 164d2c81f918..29769e9d6d8f 100644 --- a/www/mod_log_sql2-dtc/files/patch-mod_log_sql.c +++ b/www/mod_log_sql2-dtc/files/patch-mod_log_sql.c @@ -1,5 +1,5 @@ ---- ./mod_log_sql.c.orig 2006-11-07 02:43:23.000000000 +0000 -+++ ./mod_log_sql.c 2009-12-27 01:39:36.463108543 +0000 +--- mod_log_sql.c.orig 2006-11-06 23:43:23.000000000 -0300 ++++ mod_log_sql.c 2010-08-20 17:09:29.000000000 -0300 @@ -37,6 +37,11 @@ #define DEFAULT_HOUT_TABLE_NAME "headers_out" #define DEFAULT_COOKIE_TABLE_NAME "cookies" @@ -22,7 +22,18 @@ } logsql_state; -@@ -648,6 +656,9 @@ +@@ -460,6 +468,10 @@ + } + } + ++static char* log_sql_insert_enclose(char* insert_close,request_rec *r) { ++ return global_config.driver->enclose_insert_ignore(insert_close,r); ++} ++ + /* post_config / module_init */ + #if defined(WITH_APACHE20) + static int log_sql_post_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s) +@@ -648,6 +660,9 @@ cls->hout_table_name = DEFAULT_HOUT_TABLE_NAME; cls->cookie_table_name = DEFAULT_COOKIE_TABLE_NAME; cls->preserve_file = DEFAULT_PRESERVE_FILE; @@ -32,7 +43,7 @@ cls->transfer_ignore_list = apr_array_make(p, 1, sizeof(char *)); cls->transfer_accept_list = apr_array_make(p, 1, sizeof(char *)); -@@ -759,6 +770,15 @@ +@@ -759,6 +774,15 @@ if (child->cookie_table_name == DEFAULT_COOKIE_TABLE_NAME) child->cookie_table_name = parent->cookie_table_name; @@ -48,7 +59,7 @@ DO_MERGE_ARRAY(parent->transfer_ignore_list, child->transfer_ignore_list, subp); DO_MERGE_ARRAY(parent->transfer_accept_list, child->transfer_accept_list, subp); DO_MERGE_ARRAY(parent->remhost_ignore_list, child->remhost_ignore_list, subp); -@@ -790,6 +810,11 @@ +@@ -790,6 +814,10 @@ const char *hout_tablename = cls->hout_table_name; const char *hin_tablename = cls->hin_table_name; const char *cookie_tablename = cls->cookie_table_name; @@ -56,11 +67,10 @@ + const char *scoreboard_subdomain = cls->scoreboard_subdomain; + const char *scoreboard_table_name = cls->scoreboard_table_name; + struct timeval now_time; -+ if (global_config.driver == NULL) { return OK; } -@@ -1110,6 +1135,29 @@ +@@ -1110,6 +1138,39 @@ if (cookie_query) safe_sql_insert(orig, LOGSQL_TABLE_COOKIES,cookie_tablename,cookie_query); @@ -69,28 +79,38 @@ + { + const char *score_query_insert; + const char *score_query_update; ++ const char *score_query_insert_ignore; + struct tm *ptr; + time_t tm; + char sql_month[60]; + char sql_year[60]; + char a[60]; ++ char* bytes_sent; + + tm = time(NULL); + ptr = localtime(&tm); + strftime(sql_month ,100 , "\%m",ptr); + strftime(sql_year ,100 , "\%Y",ptr); + -+ score_query_insert = apr_psprintf(r->pool, "insert ignore into %s (domain,vhost,month,year,count_impressions) values ('%s','%s','%s','%s','0')" ++ score_query_insert = apr_psprintf(r->pool, " %s (domain,vhost,month,year,count_impressions) values ('%s','%s','%s','%s','0')" + ,scoreboard_table_name,scoreboard_domain,scoreboard_subdomain,sql_month,sql_year); -+ safe_sql_insert(orig,LOGSQL_TABLE_SCORE,"score_board",score_query_insert); -+ score_query_update = apr_psprintf(r->pool, "update %s SET count_impressions = count_impressions+1, bytes_sent = bytes_sent+%s WHERE domain='%s' AND vhost='%s' AND month='%s' AND year='%s'" -+ ,scoreboard_table_name,extract_bytes_sent(r, a),scoreboard_domain,scoreboard_subdomain,sql_month,sql_year); -+ safe_sql_insert(orig,LOGSQL_TABLE_SCORE,"score_board",score_query_update); ++ // Add insert ignore into ... ; ++ // or begin; insert into ... ; commit; ++ // depending on the drive used ++ score_query_insert_ignore = log_sql_insert_enclose(score_query_insert,r); ++ ++ safe_sql_insert(orig,LOGSQL_TABLE_SCORE,"score_board",score_query_insert_ignore); ++ bytes_sent = extract_bytes_sent(r, a); ++ if (bytes_sent[0] != '-'){ ++ score_query_update = apr_psprintf(r->pool, "update %s SET count_impressions = count_impressions+1, bytes_sent = bytes_sent+%s WHERE domain='%s' AND vhost='%s' AND month='%s' AND year='%s'" ++ ,scoreboard_table_name,extract_bytes_sent(r, a),scoreboard_domain,scoreboard_subdomain,sql_month,sql_year); ++ safe_sql_insert(orig,LOGSQL_TABLE_SCORE,"score_board",score_query_update); ++ } + } return OK; } } -@@ -1171,6 +1219,18 @@ +@@ -1171,6 +1232,18 @@ (void *)APR_OFFSETOF(logsql_state, cookie_table_name), RSRC_CONF, "The database table that holds the cookie info") , |
