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 ma...@apache.org on 2009/02/14 16:59:22 UTC
svn commit: r744510 -
/webservices/axis2/trunk/c/axiom/src/attachments/mime_parser.c
Author: manjula
Date: Sat Feb 14 15:59:22 2009
New Revision: 744510
URL: http://svn.apache.org/viewvc?rev=744510&view=rev
Log:
Handling single buffer case more correctly.
Modified:
webservices/axis2/trunk/c/axiom/src/attachments/mime_parser.c
Modified: webservices/axis2/trunk/c/axiom/src/attachments/mime_parser.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/axiom/src/attachments/mime_parser.c?rev=744510&r1=744509&r2=744510&view=diff
==============================================================================
--- webservices/axis2/trunk/c/axiom/src/attachments/mime_parser.c (original)
+++ webservices/axis2/trunk/c/axiom/src/attachments/mime_parser.c Sat Feb 14 15:59:22 2009
@@ -439,7 +439,9 @@
/* Here we need to check for more data, because if the message is too small
* comapred to the reading size there may be no data in the stream , instead
- * all the remaining data may be in the buffer */
+ * all the remaining data may be in the buffer.And if there are no more data
+ * we will set the len to be 0. Otherwise len_array will contain wrong lenghts.
+ */
if(axiom_mime_parser_is_more_data(mime_parser, env, callback_info))
{
@@ -447,7 +449,11 @@
len = callback(buffer + malloc_len, size - malloc_len, (void *) callback_ctx);
}
-
+ else
+ {
+ len = 0;
+ }
+
/* We do not need the data in the previous buffers once we found a particular
* string and after worked with those buffers */
@@ -490,6 +496,10 @@
{
len = callback(buffer + malloc_len, size - malloc_len, (void *) callback_ctx);
}
+ else
+ {
+ len = 0;
+ }
axiom_mime_parser_clear_buffers(env, buf_array, part_start, buf_num);
if(len >= 0)
{
@@ -572,7 +582,10 @@
{
len = callback(buffer + malloc_len, size - malloc_len, (void *) callback_ctx);
}
-
+ else
+ {
+ len = 0;
+ }
axiom_mime_parser_clear_buffers(env, buf_array, part_start, buf_num);
if(len >= 0)
{
@@ -626,6 +639,10 @@
{
len = callback(buffer + malloc_len, size - malloc_len, (void *) callback_ctx);
}
+ else
+ {
+ len = 0;
+ }
axiom_mime_parser_clear_buffers(env, buf_array, part_start, buf_num);
if(len >= 0)
{
@@ -806,7 +823,10 @@
{
len = callback(buffer + malloc_len, size - malloc_len, (void *) callback_ctx);
}
-
+ else
+ {
+ len = 0;
+ }
axiom_mime_parser_clear_buffers(env, buf_array, part_start, buf_num);
if(len >= 0)
{
@@ -857,6 +877,10 @@
{
len = callback(buffer + malloc_len, size - malloc_len, (void *) callback_ctx);
}
+ else
+ {
+ len = 0;
+ }
axiom_mime_parser_clear_buffers(env, buf_array, part_start, buf_num);
if(len >= 0)
{
@@ -983,6 +1007,10 @@
{
len = callback(buffer + malloc_len, size - malloc_len, (void *) callback_ctx);
}
+ else
+ {
+ len = 0;
+ }
if(len >= 0)
{
len_array[buf_num] = malloc_len + len;
@@ -1021,6 +1049,10 @@
{
len = callback(buffer + malloc_len, size - malloc_len, (void *) callback_ctx);
}
+ else
+ {
+ len = 0;
+ }
if(len >= 0)
{
len_array[buf_num] = malloc_len + len;
@@ -2196,7 +2228,7 @@
mime_parser->mtom_caching_callback = (axiom_mtom_caching_callback_t *)ptr;
mime_parser->mtom_caching_callback->param = impl_info_param;
- /* mime_parser->mtom_caching_callback->user_param = user_param; */
+ mime_parser->mtom_caching_callback->user_param = user_param;
return AXIOM_MTOM_CACHING_CALLBACK_INIT_HANDLER(mime_parser->mtom_caching_callback, env, mime_id);
}