X-Git-Url: https://git.rapsys.eu/ihttpd/blobdiff_plain/b5b5672cb19d6a406a661d728565852ba9116860..3384065809c951d0c019cd8919ab6c43c7b3b4df:/SOURCES/httpd-2.4.25-ab_source_address.patch diff --git a/SOURCES/httpd-2.4.25-ab_source_address.patch b/SOURCES/httpd-2.4.25-ab_source_address.patch new file mode 100644 index 0000000..a341477 --- /dev/null +++ b/SOURCES/httpd-2.4.25-ab_source_address.patch @@ -0,0 +1,72 @@ +--- httpd-2.4.35/docs/man/ab.1.bak 2018-10-21 16:10:11.161024133 +0000 ++++ httpd-2.4.35/docs/man/ab.1 2018-10-21 16:11:25.689793452 +0000 +@@ -130,6 +130,9 @@ + \fB-X \fIproxy\fR[:\fIport\fR]\fR + Use a proxy server for the requests\&. + .TP ++\fB-o \fIsrc_address\fR\fR ++Set the local source address\&. ++.TP + \fB-y \fI-attributes\fR\fR + String to use as attributes for \fB\fR\&. + .TP +--- httpd-2.4.33/support/ab.c.ab_source_address.droplet 2018-03-16 01:02:58.000000000 +0200 ++++ httpd-2.4.33/support/ab.c 2018-03-27 10:39:44.792971820 +0300 +@@ -313,6 +313,7 @@ + const char *connecthost; + const char *myhost; + apr_port_t connectport; ++char *src_address; + const char *gnuplot; /* GNUplot file */ + const char *csvperc; /* CSV Percentile file */ + const char *fullurl; +@@ -1299,6 +1300,7 @@ + static void start_connect(struct connection * c) + { + apr_status_t rv; ++ apr_sockaddr_t *from; + + if (!(started < requests)) + return; +@@ -1348,6 +1350,14 @@ + } + } + ++ if (src_address) { ++ if ((rv = apr_sockaddr_info_get(&from, src_address, destsa->family, ++ 0, 0, c->ctx)) != APR_SUCCESS) ++ apr_err("src_address get", rv); ++ if ((rv = apr_socket_bind(c->aprsock, from)) != APR_SUCCESS) ++ apr_err("src_address bind", rv); ++ } ++ + c->start = lasttime = apr_time_now(); + #ifdef USE_SSL + if (is_ssl) { +@@ -2085,6 +2095,7 @@ + fprintf(stderr, " -P attribute Add Basic Proxy Authentication, the attributes\n"); + fprintf(stderr, " are a colon separated username and password.\n"); + fprintf(stderr, " -X proxy:port Proxyserver and port number to use\n"); ++ fprintf(stderr, " -o src_address Set the local source address\n"); + fprintf(stderr, " -V Print version number and exit\n"); + fprintf(stderr, " -k Use HTTP KeepAlive feature\n"); + fprintf(stderr, " -d Do not show percentiles served table.\n"); +@@ -2351,7 +2351,7 @@ + myhost = NULL; /* 0.0.0.0 or :: */ + + apr_getopt_init(&opt, cntxt, argc, argv); +- while ((status = apr_getopt(opt, "n:c:t:s:b:T:p:u:v:lrkVhwiIx:y:z:C:H:P:A:g:X:de:SqB:m:" ++ while ((status = apr_getopt(opt, "o:n:c:t:s:b:T:p:u:v:lrkVhwiIx:y:z:C:H:P:A:g:X:de:SqB:m:" + #ifdef USE_SSL + "Z:f:E:" + #endif +@@ -2305,6 +2316,9 @@ + case 'k': + keepalive = 1; + break; ++ case 'o': ++ src_address = strdup(optarg); ++ break; + case 'q': + heartbeatres = 0; + break;