]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-9059 [mod_hiredis] add session logging
authorChris Rienzo <chris.rienzo@citrix.com>
Tue, 12 Apr 2016 15:18:11 +0000 (11:18 -0400)
committerChris Rienzo <chris.rienzo@citrix.com>
Tue, 12 Apr 2016 15:18:11 +0000 (11:18 -0400)
src/mod/applications/mod_hiredis/hiredis_profile.c
src/mod/applications/mod_hiredis/mod_hiredis.c
src/mod/applications/mod_hiredis/mod_hiredis.h

index ca7164838aa2b9f0a697003a9c6defbeac265fec..333188f893b4f25f8e5b044f112e1338cd2c16ea 100644 (file)
@@ -44,50 +44,50 @@ static switch_status_t hiredis_context_reconnect(hiredis_context_t *context)
 }
 
 /* Return a context back to the pool */
-static void hiredis_context_release(hiredis_context_t *context)
+static void hiredis_context_release(hiredis_context_t *context, switch_core_session_t *session)
 {
        if (switch_queue_push(context->connection->context_pool, context) != SWITCH_STATUS_SUCCESS) {
-               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "hiredis: failed to release back to pool [%s, %d]\n", context->connection->host, context->connection->port);
+               switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_CRIT, "hiredis: failed to release back to pool [%s, %d]\n", context->connection->host, context->connection->port);
        } else {
-               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "hiredis: release back to pool [%s, %d]\n", context->connection->host, context->connection->port);
+               switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "hiredis: release back to pool [%s, %d]\n", context->connection->host, context->connection->port);
        }
 }
 
 /* Grab a context from the pool, reconnect/connect as needed */
-static hiredis_context_t *hiredis_connection_get_context(hiredis_connection_t *conn)
+static hiredis_context_t *hiredis_connection_get_context(hiredis_connection_t *conn, switch_core_session_t *session)
 {
        void *val = NULL;
 
-       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "hiredis: waiting for [%s, %d]\n", conn->host, conn->port);
+       switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "hiredis: waiting for [%s, %d]\n", conn->host, conn->port);
        if ( switch_queue_pop_timeout(conn->context_pool, &val, conn->timeout_us ) == SWITCH_STATUS_SUCCESS ) {
                hiredis_context_t *context = (hiredis_context_t *)val;
                if ( !context->context ) {
-                       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "hiredis: attempting[%s, %d]\n", conn->host, conn->port);
+                       switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_INFO, "hiredis: attempting[%s, %d]\n", conn->host, conn->port);
                        context->context = redisConnectWithTimeout(conn->host, conn->port, conn->timeout);
                        if ( context->context && !context->context->err ) {
-                               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "hiredis: connection success[%s, %d]\n", conn->host, conn->port);
+                               switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "hiredis: connection success[%s, %d]\n", conn->host, conn->port);
                                return context;
                        } else {
-                               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "hiredis: connection error[%s, %d] (%s)\n", conn->host, conn->port, context->context->errstr);
-                               hiredis_context_release(context);
+                               switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "hiredis: connection error[%s, %d] (%s)\n", conn->host, conn->port, context->context->errstr);
+                               hiredis_context_release(context, session);
                                return NULL;
                        }
                } else if ( context->context->err ) {
-                       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "hiredis: reconnecting[%s, %d]\n", conn->host, conn->port);
+                       switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_INFO, "hiredis: reconnecting[%s, %d]\n", conn->host, conn->port);
                        if (hiredis_context_reconnect(context) == SWITCH_STATUS_SUCCESS) {
-                               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "hiredis: reconnection success[%s, %d]\n", conn->host, conn->port);
+                               switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "hiredis: reconnection success[%s, %d]\n", conn->host, conn->port);
                                return context;
                        } else {
-                               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "hiredis: reconnection error[%s, %d] (%s)\n", conn->host, conn->port, context->context->errstr);
-                               hiredis_context_release(context);
+                               switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "hiredis: reconnection error[%s, %d] (%s)\n", conn->host, conn->port, context->context->errstr);
+                               hiredis_context_release(context, session);
                                return NULL;
                        }
                } else {
-                       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "hiredis: recycled from pool[%s, %d]\n", conn->host, conn->port);
+                       switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_INFO, "hiredis: recycled from pool[%s, %d]\n", conn->host, conn->port);
                        return context;
                }
        } else {
-               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "hiredis: timed out waiting for [%s, %d]\n", conn->host, conn->port);
+               switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "hiredis: timed out waiting for [%s, %d]\n", conn->host, conn->port);
        }
 
        return NULL;
@@ -182,13 +182,13 @@ switch_status_t hiredis_profile_connection_add(hiredis_profile_t *profile, char
        return SWITCH_STATUS_SUCCESS;
 }
 
-static hiredis_context_t *hiredis_profile_get_context(hiredis_profile_t *profile, hiredis_connection_t *initial_conn)
+static hiredis_context_t *hiredis_profile_get_context(hiredis_profile_t *profile, hiredis_connection_t *initial_conn, switch_core_session_t *session)
 {
        hiredis_connection_t *conn = initial_conn ? initial_conn : profile->conn_head;
        hiredis_context_t *context;
 
        while ( conn ) {
-               context = hiredis_connection_get_context(conn);
+               context = hiredis_connection_get_context(conn, session);
                if (context) {
                        /* successful redis connection */
                        return context;
@@ -196,11 +196,11 @@ static hiredis_context_t *hiredis_profile_get_context(hiredis_profile_t *profile
                conn = conn->next;
        }
 
-       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "hiredis: unable to connect\n");
+       switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "hiredis: unable to connect\n");
        return NULL;
 }
 
-static switch_status_t hiredis_context_execute_sync(hiredis_context_t *context, const char *data, char **resp)
+static switch_status_t hiredis_context_execute_sync(hiredis_context_t *context, const char *data, char **resp, switch_core_session_t *session)
 {
        redisReply *response = redisCommand(context->context, data);
        if ( !response ) {
@@ -217,7 +217,7 @@ static switch_status_t hiredis_context_execute_sync(hiredis_context_t *context,
                *resp = switch_mprintf("%lld", response->integer);
                break;
        default:
-               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "hiredis: response error[%s][%d]\n", response->str, response->type);
+               switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "hiredis: response error[%s][%d]\n", response->str, response->type);
                freeReplyObject(response);
                *resp = NULL;
                return SWITCH_STATUS_GENERR;
@@ -227,37 +227,37 @@ static switch_status_t hiredis_context_execute_sync(hiredis_context_t *context,
        return SWITCH_STATUS_SUCCESS;
 }
 
-switch_status_t hiredis_profile_execute_sync(hiredis_profile_t *profile, const char *data, char **resp)
+switch_status_t hiredis_profile_execute_sync(hiredis_profile_t *profile, const char *data, char **resp, switch_core_session_t *session)
 {
        hiredis_context_t *context = NULL;
        int reconnected = 0;
 
-       context = hiredis_profile_get_context(profile, NULL);
+       context = hiredis_profile_get_context(profile, NULL, session);
        while (context) {
-               if (hiredis_context_execute_sync(context, data, resp) == SWITCH_STATUS_SUCCESS) {
+               if (hiredis_context_execute_sync(context, data, resp, session) == SWITCH_STATUS_SUCCESS) {
                        /* got result */
-                       hiredis_context_release(context);
+                       hiredis_context_release(context, session);
                        return SWITCH_STATUS_SUCCESS;
                } else if (context->context->err) {
                        /* have a bad connection, try a single reconnect attempt before moving on to alternate connection */
                        if (reconnected || hiredis_context_reconnect(context) != SWITCH_STATUS_SUCCESS) {
                                /* try alternate connection */
-                               hiredis_context_t *new_context = hiredis_profile_get_context(profile, context->connection);
-                               hiredis_context_release(context);
+                               hiredis_context_t *new_context = hiredis_profile_get_context(profile, context->connection, session);
+                               hiredis_context_release(context, session);
                                context = new_context;
                                if (context) {
-                                       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "hiredis: got alternate connection to [%s, %d]\n", context->connection->host, context->connection->port);
+                                       switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "hiredis: got alternate connection to [%s, %d]\n", context->connection->host, context->connection->port);
                                } else {
-                                       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "hiredis: no more alternate connections to try\n");
+                                       switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "hiredis: no more alternate connections to try\n");
                                }
                                reconnected = 0;
                        } else {
-                               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "hiredis: reconnection success[%s, %d]\n", context->connection->host, context->connection->port);
+                               switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "hiredis: reconnection success[%s, %d]\n", context->connection->host, context->connection->port);
                                reconnected = 1;
                        }
                } else {
                        /* no problem with context, so don't retry */
-                       hiredis_context_release(context);
+                       hiredis_context_release(context, session);
                        return SWITCH_STATUS_GENERR;
                }
        }
index 4c4597e9a8ae1990b9e81a16fb9df8698f4e0ead..e753192bba86a0d6db9f06c1591bd438e40df38b 100644 (file)
@@ -46,7 +46,7 @@ SWITCH_STANDARD_APP(raw_app)
        if ( !zstr(data) ) {
                profile_name = strdup(data);
        } else {
-               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "hiredis: invalid data! Use the format 'default set keyname value' \n");
+               switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "hiredis: invalid data! Use the format 'default set keyname value' \n");
                goto done;
        }
 
@@ -54,19 +54,19 @@ SWITCH_STANDARD_APP(raw_app)
                *cmd = '\0';
                cmd++;
        } else {
-               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "hiredis: invalid data! Use the format 'default set keyname value' \n");
+               switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "hiredis: invalid data! Use the format 'default set keyname value' \n");
                goto done;
        }
 
        profile = switch_core_hash_find(mod_hiredis_globals.profiles, profile_name);
 
        if ( !profile ) {
-               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "hiredis: Unable to locate profile[%s]\n", profile_name);
+               switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "hiredis: Unable to locate profile[%s]\n", profile_name);
                return;
        }
 
-       if ( hiredis_profile_execute_sync(profile, cmd, &response) != SWITCH_STATUS_SUCCESS) {
-               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "hiredis: profile[%s] error executing [%s] because [%s]\n", profile_name, cmd, response);
+       if ( hiredis_profile_execute_sync(profile, cmd, &response, session) != SWITCH_STATUS_SUCCESS) {
+               switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "hiredis: profile[%s] error executing [%s] because [%s]\n", profile_name, cmd, response);
        }
 
        switch_channel_set_variable(channel, "hiredis_raw_response", response);
@@ -94,17 +94,17 @@ SWITCH_STANDARD_API(raw_api)
                data++;
        }
 
-       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "hiredis: debug: profile[%s] for command [%s]\n", input, data);
+       switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "hiredis: debug: profile[%s] for command [%s]\n", input, data);
 
        profile = switch_core_hash_find(mod_hiredis_globals.profiles, input);
 
        if ( !profile ) {
-               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "hiredis: Unable to locate profile[%s]\n", input);
+               switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "hiredis: Unable to locate profile[%s]\n", input);
                switch_goto_status(SWITCH_STATUS_GENERR, done);
        }
 
-       if ( hiredis_profile_execute_sync(profile, data, &response) != SWITCH_STATUS_SUCCESS) {
-               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "hiredis: profile[%s] error executing [%s] reason:[%s]\n", input, data, response ? response : "");
+       if ( hiredis_profile_execute_sync(profile, data, &response, session) != SWITCH_STATUS_SUCCESS) {
+               switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "hiredis: profile[%s] error executing [%s] reason:[%s]\n", input, data, response ? response : "");
                switch_goto_status(SWITCH_STATUS_GENERR, done);
        }
 
@@ -131,14 +131,14 @@ SWITCH_LIMIT_INCR(hiredis_limit_incr)
        switch_memory_pool_t *session_pool = switch_core_session_get_pool(session);
 
        if ( zstr(realm) ) {
-               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "hiredis: realm must be defined\n");
+               switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "hiredis: realm must be defined\n");
                switch_goto_status(SWITCH_STATUS_GENERR, done);
        }
 
        profile = switch_core_hash_find(mod_hiredis_globals.profiles, realm);
 
        if ( !profile ) {
-               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "hiredis: Unable to locate profile[%s]\n", realm);
+               switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "hiredis: Unable to locate profile[%s]\n", realm);
                switch_goto_status(SWITCH_STATUS_GENERR, done);
        }
 
@@ -150,12 +150,12 @@ SWITCH_LIMIT_INCR(hiredis_limit_incr)
 
        hashkey = switch_mprintf("incr %s", limit_key);
 
-       if ( (status = hiredis_profile_execute_sync(profile, hashkey, &response)) != SWITCH_STATUS_SUCCESS ) {
+       if ( (status = hiredis_profile_execute_sync(profile, hashkey, &response, session)) != SWITCH_STATUS_SUCCESS ) {
                if ( status == SWITCH_STATUS_SOCKERR && profile->ignore_connect_fail ) {
-                       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "hiredis: ignoring profile[%s] connection error executing [%s]\n", realm, hashkey);
+                       switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_INFO, "hiredis: ignoring profile[%s] connection error executing [%s]\n", realm, hashkey);
                        switch_goto_status(SWITCH_STATUS_SUCCESS, done);
                }
-               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "hiredis: profile[%s] error executing [%s] because [%s]\n", realm, hashkey, response ? response : "");
+               switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "hiredis: profile[%s] error executing [%s] because [%s]\n", realm, hashkey, response ? response : "");
                switch_channel_set_variable(channel, "hiredis_raw_response", response ? response : "");
                switch_goto_status(SWITCH_STATUS_GENERR, done);
        }
@@ -203,8 +203,8 @@ SWITCH_LIMIT_RELEASE(hiredis_limit_release)
                        profile = switch_core_hash_find(mod_hiredis_globals.profiles, limit_pvt->realm);
                        hashkey = switch_mprintf("decr %s", tmp->limit_key);
 
-                       if ( hiredis_profile_execute_sync(profile, hashkey, &response) != SWITCH_STATUS_SUCCESS ) {
-                               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "hiredis: profile[%s] error executing [%s] because [%s]\n",
+                       if ( hiredis_profile_execute_sync(profile, hashkey, &response, session) != SWITCH_STATUS_SUCCESS ) {
+                               switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "hiredis: profile[%s] error executing [%s] because [%s]\n",
                                                                  tmp->realm, hashkey, response);
                        }
 
@@ -217,12 +217,12 @@ SWITCH_LIMIT_RELEASE(hiredis_limit_release)
 
                hashkey = switch_mprintf("decr %s", limit_pvt->limit_key);
 
-               if ( ( status = hiredis_profile_execute_sync(profile, hashkey, &response) ) != SWITCH_STATUS_SUCCESS ) {
+               if ( ( status = hiredis_profile_execute_sync(profile, hashkey, &response, session) ) != SWITCH_STATUS_SUCCESS ) {
                        if ( status == SWITCH_STATUS_SOCKERR && profile->ignore_connect_fail ) {
-                               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "hiredis: ignoring profile[%s] connection error executing [%s]\n", realm, hashkey);
+                               switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_INFO, "hiredis: ignoring profile[%s] connection error executing [%s]\n", realm, hashkey);
                                switch_goto_status(SWITCH_STATUS_SUCCESS, done);
                        }
-                       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "hiredis: profile[%s] error executing [%s] because [%s]\n", realm, hashkey, response);
+                       switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "hiredis: profile[%s] error executing [%s] because [%s]\n", realm, hashkey, response);
                        switch_channel_set_variable(channel, "hiredis_raw_response", response);
                        switch_goto_status(SWITCH_STATUS_GENERR, done);
                }
@@ -257,7 +257,7 @@ SWITCH_LIMIT_USAGE(hiredis_limit_usage)
 
        hashkey = switch_mprintf("get %s", resource);
 
-       if ( hiredis_profile_execute_sync(profile, hashkey, &response) != SWITCH_STATUS_SUCCESS) {
+       if ( hiredis_profile_execute_sync(profile, hashkey, &response, NULL) != SWITCH_STATUS_SUCCESS) {
                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "hiredis: profile[%s] error executing [%s] because [%s]\n", realm, hashkey, response);
                goto err;
        }
@@ -306,7 +306,7 @@ SWITCH_LIMIT_INTERVAL_RESET(hiredis_limit_interval_reset)
 
        hashkey = switch_mprintf("set %s 0", resource);
 
-       if ( hiredis_profile_execute_sync(profile, hashkey, &response) != SWITCH_STATUS_SUCCESS) {
+       if ( hiredis_profile_execute_sync(profile, hashkey, &response, NULL) != SWITCH_STATUS_SUCCESS) {
                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "hiredis: profile[%s] error executing [%s] because [%s]\n", realm, hashkey, response);
                switch_goto_status(SWITCH_STATUS_GENERR, done);
        }
index 0b4c7545751eb6da96b95a7e3602b1f52832b151..51a72733eff9bce06a5207ec4873410589801873 100644 (file)
@@ -46,11 +46,11 @@ typedef struct hiredis_limit_pvt_s {
   struct hiredis_limit_pvt_s *next;
 } hiredis_limit_pvt_t;
 
-switch_status_t mod_hiredis_do_config();
+switch_status_t mod_hiredis_do_config(void);
 switch_status_t hiredis_profile_create(hiredis_profile_t **new_profile, char *name, uint8_t ignore_connect_fail);
 switch_status_t hiredis_profile_destroy(hiredis_profile_t **old_profile);
 switch_status_t hiredis_profile_connection_add(hiredis_profile_t *profile, char *host, char *password, uint32_t port, uint32_t timeout_ms, uint32_t max_connections);
 
-switch_status_t hiredis_profile_execute_sync(hiredis_profile_t *profile, const char *data, char **response);
+switch_status_t hiredis_profile_execute_sync(hiredis_profile_t *profile, const char *data, char **response, switch_core_session_t *session);
 
 #endif /* MOD_HIREDIS_H */