You are viewing a plain text version of this content. The canonical link for it is here.
Posted to apreq-cvs@httpd.apache.org by jo...@apache.org on 2004/12/21 02:50:23 UTC

svn commit: r122925 - /httpd/apreq/trunk/CHANGES /httpd/apreq/trunk/glue/perl/docs/Upload.pod /httpd/apreq/trunk/glue/perl/xsbuilder/Apache/Upload/Apache__Upload.h /httpd/apreq/trunk/src/apreq_params.c /httpd/apreq/trunk/src/apreq_version.h

Author: joes
Date: Mon Dec 20 17:50:22 2004
New Revision: 122925

URL: http://svn.apache.org/viewcvs?view=rev&rev=122925
Log:
apreq_upload and apreq_uploads did not search the full body table,
because their internal apr_table_do callbacks were returning the
wrong value.

$upload->slurp and $io->read did not autovivify the resultant string.
They both need to call SvSETMAGIC just prior to returning.

Modified:
   httpd/apreq/trunk/CHANGES
   httpd/apreq/trunk/glue/perl/docs/Upload.pod
   httpd/apreq/trunk/glue/perl/xsbuilder/Apache/Upload/Apache__Upload.h
   httpd/apreq/trunk/src/apreq_params.c
   httpd/apreq/trunk/src/apreq_version.h

Modified: httpd/apreq/trunk/CHANGES
Url: http://svn.apache.org/viewcvs/httpd/apreq/trunk/CHANGES?view=diff&rev=122925&p1=httpd/apreq/trunk/CHANGES&r1=122924&p2=httpd/apreq/trunk/CHANGES&r2=122925
==============================================================================
--- httpd/apreq/trunk/CHANGES	(original)
+++ httpd/apreq/trunk/CHANGES	Mon Dec 20 17:50:22 2004
@@ -4,6 +4,12 @@
 
 @section v2_05 Changes with libapreq2-2.05
 
+
+- C, Perl API [joes]
+  Several upload-related bugfixes:
+   1) apreq_upload and apreq_uploads did not search the full body table,
+   2) $upload->slurp and $io->read did not autovivify the resultant string.
+
 - C API [joes]
   Add "flags" attribute to apreq_value_t, planning for charset support.
   This is an ABI change, starting with libapreq2.so.2.0.24.

Modified: httpd/apreq/trunk/glue/perl/docs/Upload.pod
Url: http://svn.apache.org/viewcvs/httpd/apreq/trunk/glue/perl/docs/Upload.pod?view=diff&rev=122925&p1=httpd/apreq/trunk/glue/perl/docs/Upload.pod&r1=122924&p2=httpd/apreq/trunk/glue/perl/docs/Upload.pod&r2=122925
==============================================================================
--- httpd/apreq/trunk/glue/perl/docs/Upload.pod	(original)
+++ httpd/apreq/trunk/glue/perl/docs/Upload.pod	Mon Dec 20 17:50:22 2004
@@ -11,6 +11,7 @@
     $u = Apache::Upload->new($r, name => "foo", file => __FILE__);
     $req->body_status(0);
     $req->parse;
+    $req->body->add(foo => "bar"); # dummy param with same name as upload
     $req->body->add($u);
     open(my $fh, __FILE__) or die $!;
     binmode $fh;
@@ -26,6 +27,7 @@
 
 =head1 SYNOPSIS
 
+
 =for example begin
 
     use Apache::Upload;
@@ -41,13 +43,15 @@
     read $upload->fh, $fh_data, $size;
     ok $slurp_data eq $fh_data;
 
-    $io = $upload->io;
+    my $io = $upload->io;
     print while <$io>;
 
 =for example end
 
 =for example_testing
     ok $upload->bb->length == $size;
+    $uploads = $req->upload();
+    is (scalar keys %{$uploads}, 1, "found upload");
     is $_STDOUT_, $data;
     is $fh_data, $data;
     is $slurp_data, $data;
@@ -55,6 +59,7 @@
 
 
 
+
 =head1 DESCRIPTION
 
 Apache::Upload is a new module based on the original package included
@@ -82,8 +87,8 @@
 
 The name of the HTML form element which generated the upload.
 
-=for example_testing
-    is $upload->name, "foo";
+=for testing
+    is $u->name, "foo";
 
 
 
@@ -96,8 +101,8 @@
 some agents will submit the file's full pathname, while others 
 may submit just the basename.
 
-=for example_testing
-    is $upload->filename, __FILE__;
+=for testing
+    is $u->filename, __FILE__;
 
 
 
@@ -136,6 +141,9 @@
 
 =for example_testing
     is $_STDOUT_, $data;
+    $io = $upload->io;
+    $io->read($h{io}, $upload->size);
+    is $h{io}, $data, "autovivifying read";
 
 See L<READ|read> and L<READLINE|readline> below for additional notes 
 on their usage.
@@ -158,8 +166,8 @@
 
 Returns the size of the upload in bytes.
 
-=for example_testing
-    is $upload->size, -s __FILE__;
+=for testing
+    is $u->size, -s __FILE__;
 
 
 
@@ -255,6 +263,8 @@
 
 =for example_testing
     is $size, length $contents;
+    $upload->slurp($h{slurp});
+    is $h{slurp}, $contents, "autovivifying slurp";
     $contents =~ s{\r}{}g;
     is $contents, $data;
 

Modified: httpd/apreq/trunk/glue/perl/xsbuilder/Apache/Upload/Apache__Upload.h
Url: http://svn.apache.org/viewcvs/httpd/apreq/trunk/glue/perl/xsbuilder/Apache/Upload/Apache__Upload.h?view=diff&rev=122925&p1=httpd/apreq/trunk/glue/perl/xsbuilder/Apache/Upload/Apache__Upload.h&r1=122924&p2=httpd/apreq/trunk/glue/perl/xsbuilder/Apache/Upload/Apache__Upload.h&r2=122925
==============================================================================
--- httpd/apreq/trunk/glue/perl/xsbuilder/Apache/Upload/Apache__Upload.h	(original)
+++ httpd/apreq/trunk/glue/perl/xsbuilder/Apache/Upload/Apache__Upload.h	Mon Dec 20 17:50:22 2004
@@ -291,6 +291,7 @@
     }
     if (SvTAINTED(obj))
         SvTAINTED_on(ST(1));
+    SvSETMAGIC(ST(1));
     XSRETURN_IV(len_size);
 }
 
@@ -496,6 +497,7 @@
 
     *buf = 0;
     SvPOK_only(sv);
+    SvSETMAGIC(sv);
     XSRETURN_IV(want);
 }
 

Modified: httpd/apreq/trunk/src/apreq_params.c
Url: http://svn.apache.org/viewcvs/httpd/apreq/trunk/src/apreq_params.c?view=diff&rev=122925&p1=httpd/apreq/trunk/src/apreq_params.c&r1=122924&p2=httpd/apreq/trunk/src/apreq_params.c&r2=122925
==============================================================================
--- httpd/apreq/trunk/src/apreq_params.c	(original)
+++ httpd/apreq/trunk/src/apreq_params.c	Mon Dec 20 17:50:22 2004
@@ -21,9 +21,8 @@
 
 #define MAX_LEN         (1024 * 1024)
 #define MAX_BRIGADE_LEN (1024 * 256)
-#define MAX_FIELDS      (200)
 #define MAX_READ_AHEAD  (1024 * 64)
-    
+
 APREQ_DECLARE(apreq_param_t *) apreq_make_param(apr_pool_t *p, 
                                                 const char *name, 
                                                 const apr_size_t nlen, 
@@ -147,7 +146,7 @@
     apr_array_header_t *arr = data;
     *(apreq_param_t **)apr_array_push(arr) = 
         apreq_value_to_param(apreq_strtoval(val));
-    return 1;
+    return 1;   /* keep going */
 }
 
 
@@ -323,7 +322,7 @@
     apreq_param_t *p = apreq_value_to_param(apreq_strtoval(val));
     if (p->bb)
         apr_table_addn(t, key, val);
-    return 0;
+    return 1;   /* keep going */
 }
 
 
@@ -354,10 +353,10 @@
     apreq_param_t **q = data;
     if (p->bb) {
         *q = p;
-        return 1; /* upload found, stop */
+        return 0; /* upload found, stop */
     }
     else
-        return 0; /* keep searching */
+        return 1; /* keep searching */
 }
 
 

Modified: httpd/apreq/trunk/src/apreq_version.h
Url: http://svn.apache.org/viewcvs/httpd/apreq/trunk/src/apreq_version.h?view=diff&rev=122925&p1=httpd/apreq/trunk/src/apreq_version.h&r1=122924&p2=httpd/apreq/trunk/src/apreq_version.h&r2=122925
==============================================================================
--- httpd/apreq/trunk/src/apreq_version.h	(original)
+++ httpd/apreq/trunk/src/apreq_version.h	Mon Dec 20 17:50:22 2004
@@ -61,7 +61,7 @@
 #define APREQ_MINOR_VERSION       0
 
 /** patch level */
-#define APREQ_PATCH_VERSION      24
+#define APREQ_PATCH_VERSION      25
 
 /** 
  *  This symbol is defined for internal, "development" copies of libapreq.