#include "mpm_status.h"
#include "http_config.h"
#include "http_vhost.h"
+#include "http_log.h"
#include "util_filter.h"
#ifdef HAVE_NETINET_IN_H
apr_socket_t *inout, long id)
{
conn_rec *conn = (conn_rec *) apr_pcalloc(p, sizeof(conn_rec));
+ apr_status_t rv;
/* Got a connection structure, so initialize what fields we can
* (the rest are zeroed out by pcalloc).
conn->notes = apr_make_table(p, 5);
conn->pool = p;
- apr_get_sockaddr(&conn->local_addr, APR_LOCAL, inout);
+ if ((rv = apr_get_sockaddr(&conn->local_addr, APR_LOCAL, inout))
+ != APR_SUCCESS) {
+ ap_log_error(APLOG_MARK, APLOG_INFO, rv, server,
+ "apr_get_sockaddr(APR_LOCAL)");
+ apr_close_socket(inout);
+ return NULL;
+ }
apr_get_ipaddr(&conn->local_ip, conn->local_addr);
- apr_get_sockaddr(&conn->remote_addr, APR_REMOTE, inout);
+ if ((rv = apr_get_sockaddr(&conn->remote_addr, APR_REMOTE, inout))
+ != APR_SUCCESS) {
+ ap_log_error(APLOG_MARK, APLOG_INFO, rv, server,
+ "apr_get_sockaddr(APR_REMOTE)");
+ apr_close_socket(inout);
+ return NULL;
+ }
apr_get_ipaddr(&conn->remote_ip, conn->remote_addr);
conn->base_server = server;
conn->client_socket = inout;
current_conn = ap_new_connection(ptrans, ap_server_conf, csd,
my_child_num);
-
- ap_process_connection(current_conn);
- ap_lingering_close(current_conn);
+ if (current_conn) {
+ ap_process_connection(current_conn);
+ ap_lingering_close(current_conn);
+ }
}
clean_child_exit(0);
}