SDB: Fix web debug bug and add packet tracing in log 36/13736/1
authorho.namkoong <ho.namkoong@samsung.com>
Fri, 13 Dec 2013 07:04:53 +0000 (16:04 +0900)
committerho.namkoong <ho.namkoong@samsung.com>
Fri, 13 Dec 2013 07:04:53 +0000 (16:04 +0900)
Change-Id: Ic7e54706d4278263d483088a1d7ee3359c36b9db
Signed-off-by: ho.namkoong <ho.namkoong@samsung.com>
src/log.c
src/log.h
src/sockets.c
src/transport.c
src/utils_unix.c

index 711c4bb4d1b88123bcd85fc043995a87a0a0e85f..2f63502827daa97fe4a5cf6d1acb1d96d20d7cca 100644 (file)
--- a/src/log.c
+++ b/src/log.c
 #include "strutils.h"
 
 int loglevel_mask;
+//0 do not trace packet
+//1 trace packet with MAX_DUMP_HEX_LEN
+//2 trace full packet
+int trace_packet = 0;
 
 static struct {
     char*  name;
@@ -38,8 +42,10 @@ static struct {
     { NULL, 0 }
 };
 
+//logging full packet
 void logging_hex(char* hex, char* asci) {
 
+    sdb_mutex_lock(&D_lock, NULL);
     int hex_len = s_strnlen(hex, 4096);
 
     char* hex_ptr = hex;
@@ -73,8 +79,9 @@ void logging_hex(char* hex, char* asci) {
     }
 
     fprintf(stderr, "%s\n", asci_ptr);
-
-
+    fprintf(stderr, "--------------LOGGING HEX END--------------\n\n");
+    fflush(stderr);
+    sdb_mutex_unlock(&D_lock, NULL);
 }
 
 void logging(LogLevel level, const char *filename, const char *funcname, int line_number, const char *fmt, ...) {
@@ -148,7 +155,17 @@ void  log_init(void)
 {
     char*  sdb_debug = NULL;
 
+
     if ((sdb_debug = getenv(DEBUG_ENV))) {
         log_parse(sdb_debug);
     }
+
+    char* trace_packet;
+    trace_packet = getenv(TRACE_PACKET);
+    if(!strcmp(trace_packet, "true")) {
+        trace_packet = 2;
+    }
+    else if ((loglevel_mask & (1 << SDBLOG_INFO)) != 0) {
+        trace_packet = 1;
+    }
 }
index 6701158985c3a892a57f90370125a11040431513..729ee4dc7d8e8ee06fd37203c1e75b1090b852ee 100644 (file)
--- a/src/log.h
+++ b/src/log.h
@@ -19,7 +19,9 @@
 
 #define  SDB_TRACE    1
 #define  DEBUG_ENV       "SDB_DEBUG"
+#define  TRACE_PACKET    "SDB_TRACE_PACKET"
 extern int loglevel_mask;
+extern int trace_packet;
 
 typedef enum {
     SDBLOG_FATAL = 1,
@@ -53,11 +55,9 @@ typedef enum {
         do { if ((loglevel_mask & (1 << SDBLOG_FIXME)) != 0) { \
             logging(SDBLOG_FIXME, __FILE__, __FUNCTION__, __LINE__, args); } } while(0)
 
-#define LOG_HEX(hex, asci) \
-        do { \
-            logging_hex(hex, asci); } while(0)
-
-
+#define LOG_PACKET(args...) \
+        do { if ((loglevel_mask & (1 << SDBLOG_INFO)) != 0 || trace_packet) { \
+            logging(SDBLOG_INFO, __FILE__, __FUNCTION__, __LINE__, args); } } while(0)
 
 void log_init(void);
 void logging(LogLevel level, const char *filename, const char *funcname, int line_number, const char *fmt, ...);
index 62dbc4c292e51d1ada3098e2cec42725f5f7b2a8..e64d68501b81ce84e039e0e4940e49aa251534ec 100755 (executable)
@@ -484,10 +484,6 @@ static void local_socket_event_func(int fd, unsigned ev, void *_s)
             p->len = MAX_PAYLOAD - avail;
 
             //TODO HOT PATCH FOR 2048.
-            if(p->len > 0 && p->len % 512 == 0) {
-                s->char_2048 = p->data[--p->len];
-                s->check_2048 = 1;
-            }
 
             if(peer_enqueue(s, p) < 0) {
                 //local socket is already closed by peer or should not close the socket.
index 91c3535c89194fd03d4ad7413fc617e8133986d2..a5ca199cb0ce59344a747d5988b981c7b37be47b 100755 (executable)
@@ -76,11 +76,13 @@ int asprintf( char **sptr, char *fmt, ... )
 //#define MAX_DUMP_HEX_LEN 4096
 static void  dump_hex( const unsigned char*  ptr, size_t  len)
 {
-    if(SDB_TRACING) {
+    if(trace_packet) {
         char hex_str[]= "0123456789abcdef";
 
-        if(len > MAX_DUMP_HEX_LEN) {
-            len = MAX_DUMP_HEX_LEN;
+        if(trace_packet == 1) {
+            if(len > MAX_DUMP_HEX_LEN) {
+                len = MAX_DUMP_HEX_LEN;
+            }
         }
 
         int  i;
@@ -102,8 +104,12 @@ static void  dump_hex( const unsigned char*  ptr, size_t  len)
         }
         asci[len] = '\0';
 
-        DR("HEX:'%s', ASCI:'%s'\n", hex, asci);
-//        LOG_HEX(hex, asci);
+        if(trace_packet == 1) {
+            LOG_PACKET("HEX:'%s', ASCI:'%s'\n", hex, asci);
+        }
+        else {
+            logging_hex(hex, asci);
+        }
     }
 }
 
@@ -155,7 +161,7 @@ void run_transport_close(TRANSPORT* t)
 
 void dump_packet(const char* name, const char* func, PACKET* p)
 {
-    if(SDB_TRACING) {
+    if(trace_packet) {
         unsigned  cmd = p->msg.command;
         char command[9];
 
@@ -182,8 +188,8 @@ void dump_packet(const char* name, const char* func, PACKET* p)
             snprintf(command, sizeof command, "%08x", cmd);
         }
 
-        D("T(%s) %s: [%s] arg0=%X arg1=%X (len=%d) (total_msg_len=%d)\n",
-            name, func, command, p->msg.arg0, p->msg.arg1, p->msg.data_length, p->len);
+        LOG_PACKET("T(%s) %s: [%s] arg0=%X arg1=%X (len=%d) (total_msg_len=%d)\n",
+                name, func, command, p->msg.arg0, p->msg.arg1, p->msg.data_length, p->len);
         dump_hex(p->data, p->msg.data_length);
     }
 }
index 90df67953c37e7992dcc17ddbc4f6a6db979d345..3ae9d3b8fbba1edc1ab02e5800932ac92ad2a17f 100755 (executable)
@@ -97,7 +97,7 @@ static int _launch_server(void)
 static void _start_logging(void)
 {
     const char*  p = getenv(DEBUG_ENV);
-    if (p == NULL) {
+    if (p == NULL && !getenv(TRACE_PACKET)) {
         return;
     }
     int fd;