* @param p Pool to allocate data structures out of
* @param server The server to create the connection for
* @param inout The socket to use for all communication with the client
- * @param remaddr The remote address
- * @param addr The server's local address
* @param id ID of this connection; unique at any point in time.
*/
conn_rec *ap_new_connection(apr_pool_t *p, server_rec *server,
- apr_socket_t *inout,
- const struct sockaddr_in *remaddr,
- const struct sockaddr_in *saddr, long id);
-
-/**
- * Create a new connection using APR primitives. This is basically a
- * wrapper around ap_new_connection
- * @param p Pool to allocate data structures out of.
- * @param server The server to create the connection for
- * @param conn_socket The socket we are creating the connection on.
- * @param id ID of this connection; unique at any point in time.
- */
-conn_rec *ap_new_apr_connection(apr_pool_t *p, server_rec *server,
- apr_socket_t *conn_socket, long id);
+ apr_socket_t *inout, long id);
/**
* This is the protocol module driver. This calls all of the
desthost, NULL));
}
- origin = ap_new_apr_connection(r->pool, r->server, sock, 0);
+ origin = ap_new_connection(r->pool, r->server, sock, 0);
ap_add_output_filter("CORE", NULL, NULL, origin);
clear_connection(r->pool, r->headers_in); /* Strip connection-based headers */
*/
conn_rec *ap_new_connection(apr_pool_t *p, server_rec *server,
- apr_socket_t *inout,
- const struct sockaddr_in *remaddr,
- const struct sockaddr_in *saddr, long id)
+ apr_socket_t *inout, long id)
{
conn_rec *conn = (conn_rec *) apr_pcalloc(p, sizeof(conn_rec));
apr_sockaddr_t *sa;
conn->notes = apr_make_table(p, 5);
conn->pool = p;
- conn->local_addr = *saddr;
apr_get_sockaddr(&sa, APR_LOCAL, inout);
+ conn->local_addr = sa->sa.sin;
apr_get_ipaddr(&conn->local_ip, sa);
conn->base_server = server;
conn->client_socket = inout;
- conn->remote_addr = *remaddr;
apr_get_sockaddr(&sa, APR_REMOTE, inout);
+ conn->remote_addr = sa->sa.sin;
apr_get_ipaddr(&conn->remote_ip, sa);
conn->id = id;
return conn;
}
-
-
-
-conn_rec *ap_new_apr_connection(apr_pool_t *p, server_rec *server,
- apr_socket_t *conn_socket, long id)
-{
- apr_sockaddr_t *sa_local, *sa_remote;
-
- apr_get_sockaddr(&sa_local, APR_LOCAL, conn_socket);
- apr_get_sockaddr(&sa_remote, APR_REMOTE, conn_socket);
- return ap_new_connection(p, server, conn_socket,
- &sa_remote->sa.sin, &sa_local->sa.sin, id);
-}
return;
}
- current_conn = ap_new_apr_connection(p, ap_server_conf, sock,
- conn_id);
+ current_conn = ap_new_connection(p, ap_server_conf, sock, conn_id);
ap_process_connection(current_conn);
ap_lingering_close(current_conn);
ap_sock_disable_nagle(sock);
- current_conn = ap_new_apr_connection(p, ap_server_conf, sock,
- conn_id);
+ current_conn = ap_new_connection(p, ap_server_conf, sock, conn_id);
ap_process_connection(current_conn);
ap_lingering_close(current_conn);
ap_sock_disable_nagle(sock);
}
- current_conn = ap_new_apr_connection(p, ap_server_conf, sock,
- conn_id);
+ current_conn = ap_new_connection(p, ap_server_conf, sock, conn_id);
ap_process_connection(current_conn);
ap_lingering_close(current_conn);
long conn_id = my_child_num * HARD_THREAD_LIMIT + my_thread_num;
int csd;
- current_conn = ap_new_apr_connection(p, ap_server_conf, sock,
- conn_id);
+ current_conn = ap_new_connection(p, ap_server_conf, sock, conn_id);
ap_process_connection(current_conn);
ap_lingering_close(current_conn);
(void) ap_update_child_status(my_child_num, my_thread_num,
SERVER_BUSY_READ, (request_rec *) NULL);
- current_conn = ap_new_apr_connection(p, ap_server_conf, sock,
- conn_id);
+ current_conn = ap_new_connection(p, ap_server_conf, sock, conn_id);
ap_process_connection(current_conn);
ap_lingering_close(current_conn);
ap_sock_disable_nagle(sock);
}
- current_conn = ap_new_apr_connection(p, ap_server_conf, sock,
- conn_id);
+ current_conn = ap_new_connection(p, ap_server_conf, sock, conn_id);
ap_process_connection(current_conn);
ap_lingering_close(current_conn);
(void) ap_update_child_status(my_child_num, SERVER_BUSY_READ,
(request_rec *) NULL);
- current_conn = ap_new_apr_connection(ptrans, ap_server_conf, csd,
- my_child_num);
+ current_conn = ap_new_connection(ptrans, ap_server_conf, csd,
+ my_child_num);
ap_process_connection(current_conn);
ap_lingering_close(current_conn);
(void) ap_update_child_status(THREAD_GLOBAL(child_num), SERVER_BUSY_READ,
(request_rec *) NULL);
- current_conn = ap_new_apr_connection(ptrans, ap_server_conf, csd,
- THREAD_GLOBAL(child_num));
+ current_conn = ap_new_connection(ptrans, ap_server_conf, csd,
+ THREAD_GLOBAL(child_num));
ap_process_connection(current_conn);
ap_lingering_close(current_conn);
static void worker_main(int child_num)
{
PCOMP_CONTEXT context = NULL;
+ apr_os_sock_info_t sockinfo;
while (1) {
conn_rec *c;
if (!context)
break;
sock_disable_nagle(context->accept_socket);
- apr_put_os_sock(&context->sock, &context->accept_socket, context->ptrans);
+
+ sockinfo.os_sock = &context->accept_socket;
+ sockinfo.local = context->sa_server;
+ sockinfo.remote = context->sa_client;
+ sockinfo.family = APR_INET;
+ sockinfo.type = SOCK_STREAM;
+ apr_make_os_sock(&context->sock, &sockinfo, context->ptrans);
c = ap_new_connection(context->ptrans, server_conf, context->sock,
(struct sockaddr_in *) context->sa_client,