httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "David Reid" <dr...@jetnet.co.uk>
Subject Re: Fixing NO_WRIVEV
Date Thu, 02 May 2002 10:56:34 GMT
Will do in a while :)

david

----- Original Message -----
From: <dirkx@covalent.net>
To: <dev@httpd.apache.org>
Sent: Thursday, May 02, 2002 11:36 AM
Subject: Fixing NO_WRIVEV


>
> David,
>
> Could you (or someone else) who is on a legitimate platform which does
> not support writev() check if this is functional ?
>
> Note that I also found I had to make the #ifdef/#if defined()s to make
> things comply across the board.
>
> I've tried both with and without SSL and with/without WRITEV on bsd and
> solaris - but obviously 'faking' the four permutations.
>
> Cheers,
>
> Dw
>
> Index: ab.c
> ===================================================================
> RCS file: /home/cvs/apache-1.3/src/support/ab.c,v
> retrieving revision 1.63
> diff -c -3 -r1.63 ab.c
> *** ab.c 1 May 2002 17:02:20 -0000 1.63
> --- ab.c 2 May 2002 10:33:09 -0000
> ***************
> *** 114,120 ****
>     * configure --your-other-options
>     */
>
> -
>   #define VERSION "1.3d"
>
>   /* --------------------------------------------------------------------
*/
> --- 114,119 ----
> ***************
> *** 161,167 ****
>   #endif /* NO_APACHE_INCLUDES */
>
>   #ifdef USE_SSL
> ! #if ((!(RSAREF)) && (!(SYSSSL)))
>   /* Libraries on most systems.. */
>   #include <openssl/rsa.h>
>   #include <openssl/crypto.h>
> --- 160,166 ----
>   #endif /* NO_APACHE_INCLUDES */
>
>   #ifdef USE_SSL
> ! #if ((!defined(RSAREF)) && (!defined(SYSSSL)))
>   /* Libraries on most systems.. */
>   #include <openssl/rsa.h>
>   #include <openssl/crypto.h>
> ***************
> *** 312,319 ****
>   #endif
>
>   static void close_connection(struct connection * c);
> ! #if NO_WRITEV || USE_SSL
> ! static void s_write(struct connection * c, char *buff, int len);
>   #endif
>
>   /* --------------------------------------------------------- */
> --- 311,318 ----
>   #endif
>
>   static void close_connection(struct connection * c);
> ! #if (defined(NO_WRITEV) || defined(USE_SSL))
> ! static int s_write(struct connection * c, char *buff, int len);
>   #endif
>
>   /* --------------------------------------------------------- */
> ***************
> *** 343,354 ****
>   /* XXX this sucks - SSL mode and writev() do not mix
>    *     another artificial difference.
>    */
> ! #if !NO_WRITEV && !USE_SSL
>       struct iovec out[2];
> !     int outcnt = 1, snd = 0;
>   #endif
>       gettimeofday(&c->connect, 0);
> ! #if !NO_WRITEV && !USE_SSL
>       out[0].iov_base = request;
>       out[0].iov_len = reqlen;
>
> --- 342,354 ----
>   /* XXX this sucks - SSL mode and writev() do not mix
>    *     another artificial difference.
>    */
> ! #if ((!(defined(NO_WRITEV))) && (!(defined(USE_SSL))))
>       struct iovec out[2];
> !     int outcnt = 1;
>   #endif
> +     int snd = 0;
>       gettimeofday(&c->connect, 0);
> ! #if ((!(defined(NO_WRITEV))) && (!(defined(USE_SSL))))
>       out[0].iov_base = request;
>       out[0].iov_len = reqlen;
>
> ***************
> *** 387,400 ****
>
>   /*  Do actual data writing */
>
> ! #if NO_WRITEV || USE_SSL
> ! static void s_write(struct connection * c, char *buff, int len)
>   {
>       do {
>   int n;
> ! #if USE_SSL
>   if (ssl) {
> !     n = SSL_write(c->ssl, buff, len);
>       if (n < 0) {
>   int e = SSL_get_error(c->ssl, n);
>   /* XXXX propably wrong !!! */
> --- 388,402 ----
>
>   /*  Do actual data writing */
>
> ! #if ((defined(NO_WRITEV)) || (defined(USE_SSL)))
> ! static int s_write(struct connection * c, char *buff, int len)
>   {
> +     int left = len;
>       do {
>   int n;
> ! #ifdef USE_SSL
>   if (ssl) {
> !     n = SSL_write(c->ssl, buff, left);
>       if (n < 0) {
>   int e = SSL_get_error(c->ssl, n);
>   /* XXXX propably wrong !!! */
> ***************
> *** 406,412 ****
>   }
>   else
>   #endif
> !     n = ab_write(c->fd, buff, len);
>
>   if (n < 0) {
>       switch (errno) {
> --- 408,414 ----
>   }
>   else
>   #endif
> !     n = ab_write(c->fd, buff, left);
>
>   if (n < 0) {
>       switch (errno) {
> ***************
> *** 416,424 ****
>   /* We've tried to write to a broken pipe. */
>   epipe++;
>   close_connection(c);
> ! return;
>       default:
> ! #if USE_SSL
>   if (ssl) {
>   fprintf(stderr,"Error writing: ");
>       ERR_print_errors_fp(stderr);
> --- 418,426 ----
>   /* We've tried to write to a broken pipe. */
>   epipe++;
>   close_connection(c);
> ! return len - left;
>       default:
> ! #ifdef USE_SSL
>   if (ssl) {
>   fprintf(stderr,"Error writing: ");
>       ERR_print_errors_fp(stderr);
> ***************
> *** 430,440 ****
>   }
>   else if (n) {
>       if (verbosity >= 3)
> ! printf(" --> write(%x) %d (%d)\n", (unsigned char) buff[0], n, len);
>       buff += n;
> !     len -= n;
>   };
> !     } while (len > 0);
>   }
>   #endif
>
> --- 432,444 ----
>   }
>   else if (n) {
>       if (verbosity >= 3)
> ! printf(" --> write(%x) %d (%d)\n", (unsigned char) buff[0], n, left);
>       buff += n;
> !     left -= n;
>   };
> !     } while (left > 0);
> !
> !     return len-left;
>   }
>   #endif
>
> ***************
> *** 879,885 ****
>   goto _bad;
>       };
>
> ! #if USE_SSL
>       /*
>        * XXXX move nonblocker - so that measnurement needs to have its OWN
>        * state engine OR cannot be compared to http.
> --- 883,889 ----
>   goto _bad;
>       };
>
> ! #ifdef USE_SSL
>       /*
>        * XXXX move nonblocker - so that measnurement needs to have its OWN
>        * state engine OR cannot be compared to http.
> ***************
> *** 926,932 ****
>       fprintf(stderr, "SSL connection OK: %s\n", SSL_get_cipher(c->ssl));
>       }
>   #endif
> ! #if USE_SSL
>       if (ssl)
>   nonblock(c->fd);
>   #endif
> --- 930,936 ----
>       fprintf(stderr, "SSL connection OK: %s\n", SSL_get_cipher(c->ssl));
>       }
>   #endif
> ! #ifdef USE_SSL
>       if (ssl)
>   nonblock(c->fd);
>   #endif
> ***************
> *** 1001,1007 ****
>       char respcode[4]; /* 3 digits and null */
>
>       gettimeofday(&c->beginread, 0);
> ! #if USE_SSL
>       if (ssl) {
>   r = SSL_read(c->ssl, buffer, sizeof(buffer));
>   /* XXX fundamwentally worng .. */
> --- 1005,1011 ----
>       char respcode[4]; /* 3 digits and null */
>
>       gettimeofday(&c->beginread, 0);
> ! #ifdef USE_SSL
>       if (ssl) {
>   r = SSL_read(c->ssl, buffer, sizeof(buffer));
>   /* XXX fundamwentally worng .. */
> ***************
> *** 1364,1370 ****
>   static void usage(char *progname)
>   {
>       fprintf(stderr, "Usage: %s [options] [http"
> ! #if USE_SSL
>       "[s]"
>   #endif
>       "://]hostname[:port]/path\n", progname);
> --- 1368,1374 ----
>   static void usage(char *progname)
>   {
>       fprintf(stderr, "Usage: %s [options] [http"
> ! #ifdef USE_SSL
>       "[s]"
>   #endif
>       "://]hostname[:port]/path\n", progname);
> ***************
> *** 1394,1400 ****
>       fprintf(stderr, "    -S              Do not show confidence
estimators and warnings.\n");
>       fprintf(stderr, "    -g filename     Output collected data to
gnuplot format file.\n");
>       fprintf(stderr, "    -e filename     Output CSV file with
percentages served\n");
> ! #if USE_SSL
>       fprintf(stderr, "    -s              Use httpS instead of HTTP
(SSL)\n");
>   #endif
>       fprintf(stderr, "    -h              Display usage information (this
message)\n");
> --- 1398,1404 ----
>       fprintf(stderr, "    -S              Do not show confidence
estimators and warnings.\n");
>       fprintf(stderr, "    -g filename     Output collected data to
gnuplot format file.\n");
>       fprintf(stderr, "    -e filename     Output CSV file with
percentages served\n");
> ! #ifdef USE_SSL
>       fprintf(stderr, "    -s              Use httpS instead of HTTP
(SSL)\n");
>   #endif
>       fprintf(stderr, "    -h              Display usage information (this
message)\n");
> ***************
> *** 1414,1420 ****
>       if (strlen(purl) > 7 && strncmp(purl, "http://", 7) == 0)
>   purl += 7;
>       else
> ! #if USE_SSL
>       if (strlen(purl) > 8 && strncmp(purl, "https://", 8) == 0) {
>   purl += 8;
>   ssl = 1;
> --- 1418,1424 ----
>       if (strlen(purl) > 7 && strncmp(purl, "http://", 7) == 0)
>   purl += 7;
>       else
> ! #ifdef USE_SSL
>       if (strlen(purl) > 8 && strncmp(purl, "https://", 8) == 0) {
>   purl += 8;
>   ssl = 1;
> ***************
> *** 1442,1448 ****
>   port = atoi(p);
>
>       if ((
> ! #if USE_SSL
>   (ssl != 0) && (port != 443)) || ((ssl == 0) &&
>   #endif
>   (port != 80)))
> --- 1446,1452 ----
>   port = atoi(p);
>
>       if ((
> ! #ifdef USE_SSL
>   (ssl != 0) && (port != 443)) || ((ssl == 0) &&
>   #endif
>   (port != 80)))
> ***************
> *** 1504,1515 ****
>       proxyhost[0] = '\0';
>       optind = 1;
>       while ((c = getopt(argc, argv,
"n:c:t:T:p:v:kVhwix:y:z:C:H:P:A:g:X:de:Sq"
> ! #if USE_SSL
>          "s"
>   #endif
>          )) > 0) {
>   switch (c) {
> ! #if USE_SSL
>   case 's':
>       ssl = 1;
>       break;
> --- 1508,1519 ----
>       proxyhost[0] = '\0';
>       optind = 1;
>       while ((c = getopt(argc, argv,
"n:c:t:T:p:v:kVhwix:y:z:C:H:P:A:g:X:de:Sq"
> ! #ifdef USE_SSL
>          "s"
>   #endif
>          )) > 0) {
>   switch (c) {
> ! #ifdef USE_SSL
>   case 's':
>       ssl = 1;
>       break;
>
>
>


Mime
View raw message