]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
* ssl/ssl_engine_io.c: Fix SSL Protocol hexdumps for EBCDIC systems
authorJim Jagielski <jim@apache.org>
Sat, 1 Sep 2007 12:09:28 +0000 (12:09 +0000)
committerJim Jagielski <jim@apache.org>
Sat, 1 Sep 2007 12:09:28 +0000 (12:09 +0000)
    A conversion is required for mod_ssl to display the SSL protocol correctly
    on EBCDIC machines. Backport of rev. 349906

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x@571776 13f79535-47bb-0310-9956-ffa450edef68

STATUS
modules/ssl/ssl_engine_io.c

diff --git a/STATUS b/STATUS
index 64e7307de4d4d8e4b2b76bf27d58b33a92ec8781..6610c783e0ffe57cd355f0c17b96771bc8e6f365 100644 (file)
--- a/STATUS
+++ b/STATUS
@@ -79,15 +79,6 @@ RELEASE SHOWSTOPPERS:
 PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
   [ start all new proposals below, under PATCHES PROPOSED. ]
 
-   * ssl/ssl_engine_io.c: Fix SSL Protocol hexdumps for EBCDIC systems
-     A conversion is required for mod_ssl to display the SSL protocol correctly
-     on EBCDIC machines. Backport of rev. 349906
-     Trunk version of patch:
-       http://svn.apache.org/viewvc?view=rev&revision=349906 from 2005-11-30
-     2.2.x version of patch:
-       http://people.apache.org/~martin/ssl_engine_io.c.349906.patch
-     +1: martin, rpluem, jim
-
    * mod_proxy_http: Don't wait for response body in a HEAD request
      PR 41644
      http://svn.apache.org/viewvc?view=rev&revision=571002
index fc191d3307d2a42237e7e37e412cdf0fd645671b..f3917ea10b5053149dde9c972e2a070df3cb4817 100644 (file)
@@ -1722,6 +1722,16 @@ static void ssl_io_data_dump(server_rec *srvr,
     ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, srvr,
             "+-------------------------------------------------------------------------+");
     for(i = 0 ; i< rows; i++) {
+#if APR_CHARSET_EBCDIC
+        char ebcdic_text[DUMP_WIDTH];
+        /* Determine how many bytes we are going to process in this row. */
+        j = DUMP_WIDTH;
+        if ((i * DUMP_WIDTH + j) > len)
+            j = len % DUMP_WIDTH;
+        if (j == 0) j = DUMP_WIDTH;
+        memcpy(ebcdic_text, (char *)(s) + i * DUMP_WIDTH, j);
+        ap_xlate_proto_from_ascii(ebcdic_text, j);
+#endif
         apr_snprintf(tmp, sizeof(tmp), "| %04x: ", i * DUMP_WIDTH);
         apr_cpystrn(buf, tmp, sizeof(buf));
         for (j = 0; j < DUMP_WIDTH; j++) {
@@ -1739,7 +1749,11 @@ static void ssl_io_data_dump(server_rec *srvr,
                 apr_cpystrn(buf+strlen(buf), " ", sizeof(buf)-strlen(buf));
             else {
                 ch = ((unsigned char)*((char *)(s) + i * DUMP_WIDTH + j)) & 0xff;
+#if APR_CHARSET_EBCDIC 
+                apr_snprintf(tmp, sizeof(tmp), "%c", ((ch >= 0x20 /*' '*/) && (ch <= 0x7e /*'~'*/)) ? ebcdic_text[j] : '.');
+#else
                 apr_snprintf(tmp, sizeof(tmp), "%c", ((ch >= ' ') && (ch <= '~')) ? ch : '.');
+#endif
                 apr_cpystrn(buf+strlen(buf), tmp, sizeof(buf)-strlen(buf));
             }
         }