You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by se...@apache.org on 2008/03/09 20:17:42 UTC

svn commit: r635332 - /webservices/axis2/trunk/c/tools/tcpmon/src/tcpmon.c

Author: senaka
Date: Sun Mar  9 12:17:38 2008
New Revision: 635332

URL: http://svn.apache.org/viewvc?rev=635332&view=rev
Log:
Adding the ability to revert formatting to headers and set appropriate content-length altered by formatting.

Modified:
    webservices/axis2/trunk/c/tools/tcpmon/src/tcpmon.c

Modified: webservices/axis2/trunk/c/tools/tcpmon/src/tcpmon.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/tools/tcpmon/src/tcpmon.c?rev=635332&r1=635331&r2=635332&view=diff
==============================================================================
--- webservices/axis2/trunk/c/tools/tcpmon/src/tcpmon.c (original)
+++ webservices/axis2/trunk/c/tools/tcpmon/src/tcpmon.c Sun Mar  9 12:17:38 2008
@@ -619,6 +619,7 @@
                 axis2_char_t *footer_str =
                     "\n= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =";
                 int seek_len = 0;
+                int has_raw_binary = 0;
                 axis2_char_t *request_buffer = NULL;
                 AXIS2_FREE(env->allocator, uuid_match);
                 AXIS2_FREE(env->allocator, uuid);
@@ -658,14 +659,60 @@
                 /* loop below is for mtom cases */
                 while (!tmp1 && (read_len > temp_len))
                 {
+                    if (!has_raw_binary)
+                    {
+                        has_raw_binary = 1;
+                    }
                     tmp3 += (int)strlen(tmp3) + 1;
                     tmp1 = strstr(tmp3, footer_str);
                     temp_len += (int)strlen(tmp3) + 1;
                 }
                 if (tmp1)
                 {
-                    tmp1 = '\0';
-                    printf(request_buffer);
+                    axis2_char_t *req_header = NULL;
+                    axis2_char_t *req_payload = NULL;
+                    int req_content_len = 0;
+                    req_content_len = (int)(tmp1 - request_buffer) - 4;
+                    *tmp1 = '\0';
+                    tmp1 = NULL;
+                    tmp1 = strstr(request_buffer, "\r\n\r\n");
+                    if (tmp1)
+                    {
+                        *tmp1 = '\0';
+                        req_payload = tmp1 + 4;
+                        tmp1 = axutil_strdup(env, request_buffer);
+                        req_content_len -= (int)strlen(tmp1);
+                        tmp1 = str_replace(tmp1, ";\n\t", "; ");
+                        tmp1 = str_replace(tmp1, "User-Agent: Axis2/C\r\n", "User-Agent: Axis2/C TCPMon\r\n");
+                        req_header = tmp1;
+                        if (!has_raw_binary)
+                        {
+                            tmp2 = strstr(tmp1, "Content-Length:");
+                            if (tmp2)
+                            {
+                                tmp3 = strstr(tmp2, "\r\n");
+                                if (tmp3)
+                                {
+                                    int header_len = 0;
+                                    header_len = (int)(tmp3 - tmp2) + 2;
+                                    tmp1 = AXIS2_MALLOC(env->allocator,
+                                                        sizeof(axis2_char_t) * header_len);
+                                    memcpy(tmp1, tmp2, header_len);
+                                    tmp1[header_len] = '\0';
+                                    tmp2 = AXIS2_MALLOC(env->allocator,
+                                                        sizeof(axis2_char_t) * (header_len + 2));
+                                    sprintf(tmp2, "%s%d\r\n", "Content-Length: ", (int)strlen(req_payload));
+                                    req_header = str_replace(req_header, tmp1, tmp2);
+                                    AXIS2_FREE(env->allocator, tmp1);
+                                    AXIS2_FREE(env->allocator, tmp2);
+                                    tmp1 = NULL;
+                                    tmp2 = NULL;
+                                }
+                            }
+                        }
+                        printf("Header:\n%s\n\nPayload:\n%s\n\nContent Len: %d", req_header, req_payload, req_content_len);
+                        AXIS2_FREE(env->allocator, req_header);
+                    }
                 }
                 else if (read_len == 48 * 1024)
                 {



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org