--- ../../../libwwwDAV/HTTPGen.c Tue Mar 5 19:26:27 2002 +++ HTTPGen.c Tue Mar 5 19:30:38 2002 @@ -27,6 +27,8 @@ #define PUTS(s) (*me->target->isa->put_string)(me->target, s) #define PUTBLOCK(b, l) (*me->target->isa->put_block)(me->target, b, l) +#define LINEBUF_LENGTH 256 + struct _HTStream { const HTStreamClass * isa; HTStream * target; @@ -46,7 +48,7 @@ */ PRIVATE int HTTPGenMake (HTStream * me, HTRequest * request) { - char linebuf[256]; /* @@@ */ + char linebuf[LINEBUF_LENGTH]; /* @@@ */ char crlf[3]; HTGnHd gen_mask = HTRequest_gnHd(request); *crlf = CR; *(crlf+1) = LF; *(crlf+2) = '\0'; @@ -211,10 +213,19 @@ { char * body = HTRequest_messageBody (request); if (body && *body) { - HTTRACE(STREAM_TRACE, "HTTPGen..... Adding message body \n"); - sprintf (linebuf,"%s",body); - PUTBLOCK (linebuf, (int) strlen (linebuf)); - HT_FREE (body); + int bodylen = strlen (body); + int i = 0; + HTTRACE(STREAM_TRACE, "HTTPGen..... Adding message body \n"); + for (; i < bodylen / LINEBUF_LENGTH; ++i) { + memcpy (linebuf, body + LINEBUF_LENGTH * i, LINEBUF_LENGTH); + PUTBLOCK (linebuf, LINEBUF_LENGTH); + } + if (bodylen % LINEBUF_LENGTH) { + memcpy (linebuf, body + bodylen - bodylen % LINEBUF_LENGTH, + bodylen % LINEBUF_LENGTH); + PUTBLOCK (linebuf, bodylen % LINEBUF_LENGTH); + } + HT_FREE (body); } } #endif