Author: rfm
Date: Tue Jul 15 18:01:59 2014
New Revision: 37998
URL: http://svn.gna.org/viewcvs/gnustep?rev=37998&view=rev
Log:
minor fixup for logging
Modified:
libs/webserver/trunk/ChangeLog
libs/webserver/trunk/GNUmakefile
libs/webserver/trunk/WebServerConnection.m
Modified: libs/webserver/trunk/ChangeLog
URL:
http://svn.gna.org/viewcvs/gnustep/libs/webserver/trunk/ChangeLog?rev=37998&r1=37997&r2=37998&view=diff
==============================================================================
--- libs/webserver/trunk/ChangeLog (original)
+++ libs/webserver/trunk/ChangeLog Tue Jul 15 18:01:59 2014
@@ -1,3 +1,10 @@
+2014-07-15 Richard Frith-Macdonald <[email protected]>
+
+ * WebServerConnection.m: Fix minor error logging raw data ... we now
+ use backslash escapes to avoid problems wioth embedded nul characters.
+ * GNUmakefile: bump subminor version
+ Version 1.5.2:
+
2014-05-08 Richard Frith-Macdonald <[email protected]>
* GNUmakefile: bump subminor version
Modified: libs/webserver/trunk/GNUmakefile
URL:
http://svn.gna.org/viewcvs/gnustep/libs/webserver/trunk/GNUmakefile?rev=37998&r1=37997&r2=37998&view=diff
==============================================================================
--- libs/webserver/trunk/GNUmakefile (original)
+++ libs/webserver/trunk/GNUmakefile Tue Jul 15 18:01:59 2014
@@ -21,7 +21,7 @@
-include config.make
PACKAGE_NAME = WebServer
-PACKAGE_VERSION = 1.5.1
+PACKAGE_VERSION = 1.5.2
WebServer_INTERFACE_VERSION=1.5
CVS_MODULE_NAME = gnustep/dev-libs/WebServer
CVS_TAG_NAME = WebServer
Modified: libs/webserver/trunk/WebServerConnection.m
URL:
http://svn.gna.org/viewcvs/gnustep/libs/webserver/trunk/WebServerConnection.m?rev=37998&r1=37997&r2=37998&view=diff
==============================================================================
--- libs/webserver/trunk/WebServerConnection.m (original)
+++ libs/webserver/trunk/WebServerConnection.m Tue Jul 15 18:01:59 2014
@@ -44,6 +44,68 @@
static Class GSMimeDocumentClass = Nil;
static Class WebServerRequestClass = Nil;
static Class WebServerResponseClass = Nil;
+
+static char *
+rawEscape(NSData *d)
+{
+ const uint8_t *bytes = (const uint8_t*)[d bytes];
+ uint8_t *buf;
+ NSUInteger length = [d length];
+ NSUInteger size = length + 1;
+ NSUInteger index;
+ NSUInteger pos;
+
+ for (index = 0; index < length; index++)
+ {
+ uint8_t b = bytes[index];
+
+ if ('\n' == b) size++;
+ else if ('\r' == b) size++;
+ else if ('\t' == b) size++;
+ else if ('\\' == b) size++;
+ else if (!isprint(b)) size += 3;
+ }
+ buf = (uint8_t*)malloc(size);
+ for (pos = index = 0; index < length; index++)
+ {
+ uint8_t b = bytes[index];
+
+ if ('\n' == b)
+ {
+ buf[pos++] = '\\';
+ buf[pos++] = 'n';
+ }
+ else if ('\r' == b)
+ {
+ buf[pos++] = '\\';
+ buf[pos++] = 'r';
+ }
+ else if ('\t' == b)
+ {
+ buf[pos++] = '\\';
+ buf[pos++] = 't';
+ }
+ else if ('\\' == b)
+ {
+ buf[pos++] = '\\';
+ buf[pos++] = '\\';
+ }
+ else if (!isprint(b))
+ {
+ sprintf((char*)&buf[pos], "\\x%02x", b);
+ pos += 4;
+ }
+ else
+ {
+ buf[pos++] = b;
+ }
+ }
+ buf[pos] = '\0';
+ d = [[[NSData alloc] initWithBytesNoCopy: buf
+ length: size
+ freeWhenDone: YES] autorelease];
+ return (char*)buf;
+}
@implementation WebServerRequest
@@ -1655,11 +1717,8 @@
if (YES == conf->logRawIO && NO == quiet)
{
- int len = [d length];
- const char *str = (const char*)[d bytes];
-
- [server _log: @"%@ Data read %u bytes ... '%.*s' %@",
- self, len, len, str, d];
+ [server _log: @"%@ Data read %u bytes ... '%s' %@",
+ self, (unsigned)[d length], rawEscape(d), d];
}
[self _didData: d];
}
@@ -1796,12 +1855,9 @@
{
if (YES == conf->logRawIO && NO == quiet)
{
- int len = [d length];
- const char *str = (const char*)[d bytes];
-
- [server _log: @"%@ Data write %u bytes ... '%.*s' %@",
- self, len, len, str, d];
- }
+ [server _log: @"%@ Data write %u bytes ... '%s' %@",
+ self, (unsigned)[d length], rawEscape(d), d];
+ }
[handle writeInBackgroundAndNotify: d];
}
_______________________________________________
Gnustep-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/gnustep-cvs