#define APACHE_HTTP_CONNECTION_H
#include "ap_hooks.h"
+#include "apr_network_io.h"
#ifdef __cplusplus
extern "C" {
conn_rec *ap_new_connection(ap_context_t *p, server_rec *server, BUFF *inout,
const struct sockaddr_in *remaddr,
const struct sockaddr_in *saddr, long id);
+conn_rec *ap_new_apr_connection(ap_context_t *p, server_rec *server, BUFF *inout,
+ const ap_socket_t *conn_socket, long id);
CORE_EXPORT(void) ap_process_connection(conn_rec *);
int ap_process_http_connection(conn_rec *);
return conn;
}
+
+
+
+conn_rec *ap_new_apr_connection(ap_context_t *p, server_rec *server, BUFF *inout,
+ const ap_socket_t *conn_socket, long id)
+{
+ struct sockaddr_in *sa_local, *sa_remote;
+
+ ap_get_local_name(&sa_local, conn_socket);
+ ap_get_remote_name(&sa_remote, conn_socket);
+ return ap_new_connection(p, server, inout, sa_remote, sa_local, id);
+}
ap_listen_rec **walk;
ap_listen_rec *new;
ap_status_t status;
- char oldaddr[17];
+ char *oldaddr;
unsigned int oldport;
/* see if we've got an old listener for this address:port */
for (walk = &old_listeners; *walk; walk = &(*walk)->next) {
- ap_getport(&oldport, (*walk)->sd);
- ap_getipaddr(oldaddr,sizeof oldaddr,(*walk)->sd);
+ ap_get_local_port(&oldport, (*walk)->sd);
+ ap_get_local_ipaddr(&oldaddr,(*walk)->sd);
if (!strcmp(oldaddr, addr) && port == oldport) {
/* re-use existing record */
new = *walk;
"make_sock: failed to get a socket for %s", addr);
return;
}
- ap_setport(new->sd, port);
- ap_setipaddr(new->sd, addr);
+ ap_set_local_port(new->sd, port);
+ ap_set_local_ipaddr(new->sd, addr);
new->next = ap_listeners;
ap_listeners = new;
}
ap_bpush_iol(conn_io, iol);
- current_conn = ap_new_connection(ptrans, server_conf, conn_io,
- (struct sockaddr_in *) &sa_client,
- (struct sockaddr_in *) &sa_server,
+ current_conn = ap_new_apr_connection(ptrans, server_conf, conn_io, csd,
my_child_num);
ap_process_connection(current_conn);
conn_io = ap_bcreate(ptrans, B_RDWR);
ap_bpush_iol(conn_io, iol);
- current_conn = ap_new_connection(ptrans, server_conf, conn_io,
- (struct sockaddr_in *) &sa_client,
- (struct sockaddr_in *) &sa_server,
- THREAD_GLOBAL(child_num));
+ current_conn = ap_new_apr_connection(ptrans, server_conf, conn_io, csd,
+ THREAD_GLOBAL(child_num));
ap_process_connection(current_conn);
}
* addresses from the query socket.
*/
- ap_setport(sock, ANY_PORT);
- ap_setipaddr(sock, local_ip);
+ ap_set_local_port(sock, ANY_PORT);
+ ap_set_local_ipaddr(sock, local_ip);
if ((status = ap_bind(sock)) != APR_SUCCESS) {
ap_log_error(APLOG_MARK, APLOG_CRIT, status, srv,
"bind: rfc1413: Error binding to local port");
return -1;
}
- ap_getport(&sav_our_port, sock);
+ ap_get_local_port(&sav_our_port, sock);
/*
* errors from connect usually imply the remote machine doesn't support
* the service
*/
- ap_setport(sock, RFC1413_PORT);
- ap_setipaddr(sock, rmt_ip);
+ ap_set_remote_port(sock, RFC1413_PORT);
+ ap_set_remote_ipaddr(sock, rmt_ip);
if (ap_connect(sock, NULL) != APR_SUCCESS)
return -1;
- ap_getport(&sav_rmt_port, sock);
+ ap_get_remote_port(&sav_rmt_port, sock);
/* send the data */
buflen = ap_snprintf(buffer, sizeof(buffer), "%u,%u\r\n", sav_rmt_port,