cdr_pgsql.cl: REFACTOR Macro LENGTHEN_BUF
authorRodrigo Ramírez Norambuena <a@rodrigoramirez.com>
Sat, 23 Jan 2016 17:41:38 +0000 (14:41 -0300)
committerRodrigo Ramírez Norambuena <a@rodrigoramirez.com>
Sat, 23 Jan 2016 17:41:38 +0000 (14:41 -0300)
Remove repeated code on macro of assigned buffer to SQL vars.

Add table and connection name to log error message when is not possible
allocate memory.

Change-Id: I1fbf37d286a032d38fdda72a9f736356956c9ffe

cdr/cdr_pgsql.c

index 8dc49e1..aec2116 100644 (file)
@@ -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)
 {