fielding 97/02/15 04:26:21
Modified: src CHANGES http_main.c
Log:
Replace sock_disable_nagle with a NOOP if the compiler doesn't
understand the TCP_NODELAY option.
Submitted by: Roy Fielding, based on Marc Slemko's patch
Revision Changes Path
1.160 +3 -0 apache/src/CHANGES
Index: CHANGES
===================================================================
RCS file: /export/home/cvs/apache/src/CHANGES,v
retrieving revision 1.159
retrieving revision 1.160
diff -C3 -r1.159 -r1.160
*** CHANGES 1997/02/11 17:02:03 1.159
--- CHANGES 1997/02/15 12:26:19 1.160
***************
*** 1,5 ****
--- 1,8 ----
Changes with Apache 1.2b7
+ *) Don't disable Nagle algorithm if system doesn't have TCP_NODELAY.
+ [Marc Slemko and Roy Fielding]
+
*) Fixed problem with mod_cgi-generated internal redirects trying to
read the request message-body twice. [Archie Cobbs and Roy Fielding]
1.120 +9 -10 apache/src/http_main.c
Index: http_main.c
===================================================================
RCS file: /export/home/cvs/apache/src/http_main.c,v
retrieving revision 1.119
retrieving revision 1.120
diff -C3 -r1.119 -r1.120
*** http_main.c 1997/02/11 15:55:20 1.119
--- http_main.c 1997/02/15 12:26:20 1.120
***************
*** 1493,1520 ****
return conn;
}
! void sock_disable_nagle (int s)
{
! /*
! * The Nagle algorithm says that we should delay sending partial
* packets in hopes of getting more data. We don't want to do
* this; we are not telnet. There are bad interactions between
* P-HTTP and Nagle's algorithm that have very severe performance
* penalties. (Failing to do disable Nagle is not much of a
! * problem with simple HTTP.) A better description of these
! * problems is in preparation; contact me for details.
! * -John Heidemann <[EMAIL PROTECTED]>.
*
* In spite of these problems, failure here is not a shooting offense.
*/
const int just_say_no = 1;
! #ifndef MPE
! /* MPE does not support TCP_NODELAY */
if (0 != setsockopt(s, IPPROTO_TCP, TCP_NODELAY, (char*)&just_say_no,
! sizeof(just_say_no)))
fprintf(stderr, "httpd: could not set socket option TCP_NODELAY\n");
- #endif
}
/*****************************************************************
* Child process main loop.
--- 1493,1519 ----
return conn;
}
! #if defined(TCP_NODELAY)
! static void sock_disable_nagle (int s)
{
! /* The Nagle algorithm says that we should delay sending partial
* packets in hopes of getting more data. We don't want to do
* this; we are not telnet. There are bad interactions between
* P-HTTP and Nagle's algorithm that have very severe performance
* penalties. (Failing to do disable Nagle is not much of a
! * problem with simple HTTP.)
*
* In spite of these problems, failure here is not a shooting offense.
*/
const int just_say_no = 1;
!
if (0 != setsockopt(s, IPPROTO_TCP, TCP_NODELAY, (char*)&just_say_no,
! sizeof just_say_no))
fprintf(stderr, "httpd: could not set socket option TCP_NODELAY\n");
}
+ #else
+ #define sock_disable_nagle(s) /* NOOP */
+ #endif
/*****************************************************************
* Child process main loop.