Will do in a while :) david
----- Original Message ----- From: <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> 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; > > >