diff --git a/cdr/cdr_pgsql.c b/cdr/cdr_pgsql.c index 8dc49e1071..aec2116503 100644 --- a/cdr/cdr_pgsql.c +++ b/cdr/cdr_pgsql.c @@ -101,35 +101,26 @@ struct columns { static AST_RWLIST_HEAD_STATIC(psql_columns, columns); -#define LENGTHEN_BUF1(size) \ - do { \ - /* Lengthen buffer, if necessary */ \ - if (ast_str_strlen(sql) + size + 1 > ast_str_size(sql)) { \ - if (ast_str_make_space(&sql, ((ast_str_size(sql) + size + 3) / 512 + 1) * 512) != 0) { \ - ast_log(LOG_ERROR, "Unable to allocate sufficient memory. Insert CDR failed.\n"); \ - ast_free(sql); \ - ast_free(sql2); \ - AST_RWLIST_UNLOCK(&psql_columns); \ - ast_mutex_unlock(&pgsql_lock); \ - return -1; \ - } \ - } \ - } while (0) - -#define LENGTHEN_BUF2(size) \ - do { \ - if (ast_str_strlen(sql2) + size + 1 > ast_str_size(sql2)) { \ - if (ast_str_make_space(&sql2, ((ast_str_size(sql2) + size + 3) / 512 + 1) * 512) != 0) { \ - ast_log(LOG_ERROR, "Unable to allocate sufficient memory. Insert CDR failed.\n"); \ - ast_free(sql); \ - ast_free(sql2); \ +#define LENGTHEN_BUF(size, var_sql) \ + do { \ + /* Lengthen buffer, if necessary */ \ + if (ast_str_strlen(var_sql) + size + 1 > ast_str_size(var_sql)) { \ + if (ast_str_make_space(&var_sql, ((ast_str_size(var_sql) + size + 3) / 512 + 1) * 512) != 0) { \ + ast_log(LOG_ERROR, "Unable to allocate sufficient memory. Insert CDR '%s:%s' failed.\n", pghostname, table); \ + ast_free(sql); \ + ast_free(sql2); \ AST_RWLIST_UNLOCK(&psql_columns); \ - ast_mutex_unlock(&pgsql_lock); \ - return -1; \ - } \ - } \ + ast_mutex_unlock(&pgsql_lock); \ + return -1; \ + } \ + } \ } while (0) +#define LENGTHEN_BUF1(size) \ + LENGTHEN_BUF(size, sql); +#define LENGTHEN_BUF2(size) \ + LENGTHEN_BUF(size, sql2); + /*! \brief Handle the CLI command cdr show pgsql status */ static char *handle_cdr_pgsql_status(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a) {