mod_dialup.c revision 7184de27ec1d62a83c41cdeac0953ca9fd661e8c
a42b70fa75429d73ef00d6ae212676f8a652f51cpquerna/* Licensed to the Apache Software Foundation (ASF) under one or more
a42b70fa75429d73ef00d6ae212676f8a652f51cpquerna * contributor license agreements. See the NOTICE file distributed with
a42b70fa75429d73ef00d6ae212676f8a652f51cpquerna * this work for additional information regarding copyright ownership.
a42b70fa75429d73ef00d6ae212676f8a652f51cpquerna * The ASF licenses this file to You under the Apache License, Version 2.0
a42b70fa75429d73ef00d6ae212676f8a652f51cpquerna * (the "License"); you may not use this file except in compliance with
a42b70fa75429d73ef00d6ae212676f8a652f51cpquerna * the License. You may obtain a copy of the License at
a42b70fa75429d73ef00d6ae212676f8a652f51cpquerna * Unless required by applicable law or agreed to in writing, software
a42b70fa75429d73ef00d6ae212676f8a652f51cpquerna * distributed under the License is distributed on an "AS IS" BASIS,
a42b70fa75429d73ef00d6ae212676f8a652f51cpquerna * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
a42b70fa75429d73ef00d6ae212676f8a652f51cpquerna * See the License for the specific language governing permissions and
a42b70fa75429d73ef00d6ae212676f8a652f51cpquerna * limitations under the License.
a42b70fa75429d73ef00d6ae212676f8a652f51cpquernatypedef struct dialup_dcfg_t {
a42b70fa75429d73ef00d6ae212676f8a652f51cpquernatypedef struct dialup_baton_t {
a42b70fa75429d73ef00d6ae212676f8a652f51cpquerna while (!APR_BRIGADE_EMPTY(db->bb) && bytes_sent < db->bytes_per_second) {
a42b70fa75429d73ef00d6ae212676f8a652f51cpquerna status = apr_brigade_partition(db->bb, db->bytes_per_second, &e);
a42b70fa75429d73ef00d6ae212676f8a652f51cpquerna if (status != APR_SUCCESS && status != APR_INCOMPLETE) {
a42b70fa75429d73ef00d6ae212676f8a652f51cpquerna /* XXXXXX: Log me. */
a42b70fa75429d73ef00d6ae212676f8a652f51cpquerna APR_RING_SPLICE_HEAD(&db->tmpbb->list, f, b, apr_bucket, link);
a42b70fa75429d73ef00d6ae212676f8a652f51cpquerna e = apr_bucket_flush_create(db->r->connection->bucket_alloc);
a42b70fa75429d73ef00d6ae212676f8a652f51cpquerna status = ap_pass_brigade(db->r->output_filters, db->tmpbb);
a42b70fa75429d73ef00d6ae212676f8a652f51cpquerna "dialup: pulse: ap_pass_brigade failed:");
int status;
int status;
apr_bucket *e;
/* See core.c, default handler for all of the cases we just decline. */
return DECLINED;
return DECLINED;
#if APR_HAS_SENDFILE
, 0, r->pool);
if (rv) {
return DECLINED;
ap_set_etag(r);
return DECLINED;
#if APR_HAS_MMAP
apr_bucket_file_enable_mmap(e, 0);
db->r = r;
return status;
return SUSPENDED;
#ifndef APR_HOOK_ALMOST_LAST
typedef struct modem_speed_t {
const char *name;
#ifndef BITRATE_TO_BYTES
{NULL, 0}
void *dconf,
const char *input)
return NULL;
return cfg;
{NULL}
NULL,
NULL,
NULL,