ASF Bugzilla – Attachment 18902 Details for
Bug 40592
flood: corrupt output with report_relative_times
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Unsuccessful attempt to fix this
*local_stderr; (text/plain), 2.03 KB, created by
Scott Lamb
on 2006-09-24 04:10:39 UTC
(
hide
)
Description:
Unsuccessful attempt to fix this
Filename:
MIME Type:
Creator:
Scott Lamb
Created:
2006-09-24 04:10:39 UTC
Size:
2.03 KB
patch
obsolete
>An unsuccessful attempt to fix output corruption in >flood's <report>relative_times</report>. > >Index: flood_report_relative_times.c >=================================================================== >--- flood_report_relative_times.c (revision 449338) >+++ flood_report_relative_times.c (working copy) >@@ -27,10 +27,20 @@ > extern apr_file_t *local_stdout; > extern apr_file_t *local_stderr; > >+struct relative_times { >+ apr_thread_mutex_t *mutex; >+}; >+ > apr_status_t relative_times_report_init(report_t **report, config_t *config, > const char *profile_name, apr_pool_t *pool) > { >- return APR_SUCCESS; >+ struct relative_times *me; >+ me = apr_palloc(pool, sizeof(struct relative_times)); >+ if (me == NULL) { >+ return APR_ENOMEM; >+ } >+ *report = me; >+ return apr_thread_mutex_create(&me->mutex, APR_THREAD_MUTEX_DEFAULT, pool); > } > > apr_status_t relative_times_process_stats(report_t *report, int verified, request_t *req, response_t *resp, flood_timer_t *timer) >@@ -38,6 +48,7 @@ > #define FLOOD_PRINT_BUF 256 > apr_size_t buflen; > char buf[FLOOD_PRINT_BUF]; >+ struct relative_times *me = report; > > buflen = apr_snprintf(buf, FLOOD_PRINT_BUF, > "%" APR_INT64_T_FMT " %" APR_INT64_T_FMT >@@ -60,10 +71,15 @@ > apr_snprintf(buf+buflen, FLOOD_PRINT_BUF-buflen, " %d ", verified); > } > >- /* FIXME: this call may need to be in a critical section */ > #if APR_HAS_THREADS >+ apr_thread_mutex_lock(me->mutex); >+ apr_file_lock(local_stdout, APR_FLOCK_EXCLUSIVE); > apr_file_printf(local_stdout, "%s %ld %s\n", buf, apr_os_thread_current(), req->uri); >+ apr_file_flush(local_stdout); >+ apr_file_unlock(local_stdout); >+ apr_thread_mutex_unlock(me->mutex); > #else >+#error no threads? > apr_file_printf(local_stdout, "%s %d %s\n", buf, getpid(), req->uri); > #endif > >@@ -77,5 +93,7 @@ > > apr_status_t relative_times_destroy_report(report_t *report) > { >+ struct relative_times *me = report; >+ apr_thread_mutex_destroy(me->mutex); > return APR_SUCCESS; > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 40592
: 18902