stas 2004/06/01 16:33:50
Modified: xs/Apache/Filter Apache__Filter.h
xs/maps apache_functions.map
xs/tables/current/ModPerl FunctionTable.pm
Log:
fflush(), get_brigade() and pass_brigade() now throw exceptions if
called in the void context
Revision Changes Path
1.39 +42 -4 modperl-2.0/xs/Apache/Filter/Apache__Filter.h
Index: Apache__Filter.h
===================================================================
RCS file: /home/cvs/modperl-2.0/xs/Apache/Filter/Apache__Filter.h,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -u -r1.38 -r1.39
--- Apache__Filter.h 1 Jun 2004 20:18:02 -0000 1.38
+++ Apache__Filter.h 1 Jun 2004 23:33:50 -0000 1.39
@@ -292,9 +292,47 @@
}
static MP_INLINE
-void mpxs_Apache__Filter_fflush(pTHX_ ap_filter_t *filter,
- apr_bucket_brigade *brigade)
+apr_status_t mpxs_Apache__Filter_fflush(pTHX_ ap_filter_t *filter,
+ apr_bucket_brigade *brigade)
{
- MP_RUN_CROAK(ap_fflush(filter, brigade),
- "Apache::Filter::fflush");
+ apr_status_t rc = ap_fflush(filter, brigade);
+ /* if users don't bother to check the success, do it on their
+ * behalf */
+ if (GIMME_V == G_VOID && rc != APR_SUCCESS) {
+ modperl_croak(aTHX_ rc, "Apache::Filter::fflush");
+ }
+
+ return rc;
+}
+
+static MP_INLINE
+apr_status_t mpxs_Apache__Filter_get_brigade(pTHX_
+ ap_filter_t *f,
+ apr_bucket_brigade *bb,
+ ap_input_mode_t mode,
+ apr_read_type_e block,
+ apr_off_t readbytes)
+{
+ apr_status_t rc = ap_get_brigade(f, bb, mode, block, readbytes);
+ /* if users don't bother to check the success, do it on their
+ * behalf */
+ if (GIMME_V == G_VOID && rc != APR_SUCCESS) {
+ modperl_croak(aTHX_ rc, "Apache::Filter::get_brigade");
+ }
+
+ return rc;
+}
+
+static MP_INLINE
+apr_status_t mpxs_Apache__Filter_pass_brigade(pTHX_ ap_filter_t *f,
+ apr_bucket_brigade *bb)
+{
+ apr_status_t rc = ap_pass_brigade(f, bb);
+ /* if users don't bother to check the success, do it on their
+ * behalf */
+ if (GIMME_V == G_VOID && rc != APR_SUCCESS) {
+ modperl_croak(aTHX_ rc, "Apache::Filter::pass_brigade");
+ }
+
+ return rc;
}
1.80 +5 -3 modperl-2.0/xs/maps/apache_functions.map
Index: apache_functions.map
===================================================================
RCS file: /home/cvs/modperl-2.0/xs/maps/apache_functions.map,v
retrieving revision 1.79
retrieving revision 1.80
diff -u -u -r1.79 -r1.80
--- apache_functions.map 1 Jun 2004 20:18:02 -0000 1.79
+++ apache_functions.map 1 Jun 2004 23:33:50 -0000 1.80
@@ -221,11 +221,13 @@
-ap_add_output_filter_handle
-ap_get_output_filter_handle
>ap_add_ouput_filters_by_type
- ap_get_brigade | | \
- filter, bucket, mode=AP_MODE_READBYTES, \
+-ap_get_brigade
+ mpxs_Apache__Filter_get_brigade | | \
+ f, bb, mode=AP_MODE_READBYTES, \
block=APR_BLOCK_READ, \
readbytes=8192
- ap_pass_brigade
+- ap_pass_brigade
+ mpxs_Apache__Filter_pass_brigade
!ap_register_input_filter
!ap_register_output_filter
-ap_remove_output_filter
1.161 +50 -2 modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm
Index: FunctionTable.pm
===================================================================
RCS file: /home/cvs/modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm,v
retrieving revision 1.160
retrieving revision 1.161
diff -u -u -r1.160 -r1.161
--- FunctionTable.pm 1 Jun 2004 20:18:02 -0000 1.160
+++ FunctionTable.pm 1 Jun 2004 23:33:50 -0000 1.161
@@ -2,7 +2,7 @@
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# ! WARNING: generated by ModPerl::ParseSource/0.01
-# ! Mon May 31 12:36:08 2004
+# ! Tue Jun 1 15:51:17 2004
# ! do NOT edit, any changes will be lost !
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -5798,7 +5798,7 @@
]
},
{
- 'return_type' => 'void',
+ 'return_type' => 'apr_status_t',
'name' => 'mpxs_Apache__Filter_fflush',
'args' => [
{
@@ -5812,6 +5812,54 @@
{
'type' => 'apr_bucket_brigade *',
'name' => 'brigade'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'mpxs_Apache__Filter_get_brigade',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter *',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'f'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'bb'
+ },
+ {
+ 'type' => 'ap_input_mode_t',
+ 'name' => 'mode'
+ },
+ {
+ 'type' => 'apr_read_type_e',
+ 'name' => 'block'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'readbytes'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'mpxs_Apache__Filter_pass_brigade',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter *',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'f'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'bb'
}
]
},