summaryrefslogtreecommitdiff
path: root/cel
diff options
context:
space:
mode:
authorRodrigo Ramírez Norambuena <decipher.hk@gmail.com>2015-05-01 13:22:17 -0400
committerJoshua Colp <jcolp@digium.com>2015-05-12 05:11:39 -0500
commite6daafb8a60b6018f0ded063fa26ba2b3e336b0b (patch)
tree4833ced2b0fc551f3021bb07aba39b2f61d87477 /cel
parent009b44172d714be25d4783e6e40850b50074ad32 (diff)
cdr_pgsql, cel_pgsql: Store maximum buffer size to prevent reallocation
The code previously used a fixed size of 512 for the SQL queries. Depending on the size this may require it to grow. This change makes it so if the buffer size does grow the size is stored and next time the buffer will be large enough. Change-Id: I55385899f1c06dee47e4274c2d21538037b2d895
Diffstat (limited to 'cel')
-rw-r--r--cel/cel_pgsql.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/cel/cel_pgsql.c b/cel/cel_pgsql.c
index 2d7f0dfb0..c5c4fa92b 100644
--- a/cel/cel_pgsql.c
+++ b/cel/cel_pgsql.c
@@ -71,6 +71,7 @@ static char *pgdbport;
static char *table;
static int connected = 0;
+/* Optimization to reduce number of memory allocations */
static int maxsize = 512, maxsize2 = 512;
static int usegmtime = 0;
@@ -372,6 +373,14 @@ static void pgsql_log(struct ast_event *event)
}
PQclear(result);
+ /* Next time, just allocate buffers that are that big to start with. */
+ if (ast_str_strlen(sql) > maxsize) {
+ maxsize = ast_str_strlen(sql);
+ }
+ if (ast_str_strlen(sql2) > maxsize2) {
+ maxsize2 = ast_str_strlen(sql2);
+ }
+
ast_log_cleanup:
ast_free(sql);
ast_free(sql2);