cvs commit: apache-1.3/src/main rfc1413.c

1998-03-29 Thread dgaudet
dgaudet 98/03/29 01:33:25

  Modified:src/main rfc1413.c
  Log:
  a little more efficient
  
  Revision  ChangesPath
  1.21  +3 -2  apache-1.3/src/main/rfc1413.c
  
  Index: rfc1413.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/main/rfc1413.c,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- rfc1413.c 1998/03/17 08:21:03 1.20
  +++ rfc1413.c 1998/03/29 09:33:24 1.21
  @@ -106,6 +106,7 @@
   int i;
   char *cp;
   char buffer[RFC1413_MAXDATA + 1];
  +int buflen;
   
   /*
* Bind the local and remote ends of the query socket to the same
  @@ -137,10 +138,10 @@
return -1;
   
   /* send the data */
  -ap_snprintf(buffer, sizeof(buffer), "%u,%u\r\n", 
ntohs(rmt_sin->sin_port),
  +buflen = ap_snprintf(buffer, sizeof(buffer), "%u,%u\r\n", 
ntohs(rmt_sin->sin_port),
ntohs(our_sin->sin_port));
   do
  - i = write(sock, buffer, strlen(buffer));
  + i = write(sock, buffer, buflen);
   while (i == -1 && errno == EINTR);
   if (i == -1) {
aplog_error(APLOG_MARK, APLOG_CRIT, srv,
  
  
  


cvs commit: apache-1.3/src/main rfc1413.c

1998-05-18 Thread brian
brian   98/05/18 14:56:12

  Modified:src  CHANGES
   src/main rfc1413.c
  Log:
  Improve RFC1413 support.
  See Message-ID: <[EMAIL PROTECTED]>
  
  Revision  ChangesPath
  1.852 +2 -0  apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.851
  retrieving revision 1.852
  diff -u -r1.851 -r1.852
  --- CHANGES   1998/05/18 11:24:19 1.851
  +++ CHANGES   1998/05/18 21:56:06 1.852
  @@ -1,5 +1,7 @@
   Changes with Apache 1.3b7
   
  +  *) Improve RFC1413 support. [Bob Beck <[EMAIL PROTECTED]>]
  +
 *) Fix support script `dbmmanage': It was unable to handle some sort
of passwords, especially passwords with "0" chars.
[Ralf S. Engelschall] PR#2242
  
  
  
  1.24  +32 -18apache-1.3/src/main/rfc1413.c
  
  Index: rfc1413.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/main/rfc1413.c,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- rfc1413.c 1998/04/11 12:00:31 1.23
  +++ rfc1413.c 1998/05/18 21:56:11 1.24
  @@ -103,7 +103,8 @@
   /* bind_connect - bind both ends of a socket */
   /* Ambarish fix this. Very broken */
   static int get_rfc1413(int sock, const struct sockaddr_in *our_sin,
  -  const struct sockaddr_in *rmt_sin, char user[256], server_rec *srv)
  +const struct sockaddr_in *rmt_sin, 
  +char user[RFC1413_USERLEN+1], server_rec *srv)
   {
   struct sockaddr_in rmt_query_sin, our_query_sin;
   unsigned int rmt_port, our_port;
  @@ -144,30 +145,43 @@
   /* send the data */
   buflen = ap_snprintf(buffer, sizeof(buffer), "%u,%u\r\n", 
ntohs(rmt_sin->sin_port),
ntohs(our_sin->sin_port));
  -do
  - i = write(sock, buffer, buflen);
  -while (i == -1 && errno == EINTR);
  -if (i == -1) {
  - ap_log_error(APLOG_MARK, APLOG_CRIT, srv,
  - "write: rfc1413: error sending request");
  - return -1;
  +
  +/* send query to server. Handle short write. */
  +i = 0;
  +while(i < strlen(buffer)) {
  +int j;
  + j = write(sock, buffer+i, (strlen(buffer+i)));
  + if (j < 0 && errno != EINTR) {
  +   ap_log_error(APLOG_MARK, APLOG_CRIT, srv,
  +"write: rfc1413: error sending request");
  +   return -1;
  + }
  + else if (j > 0) {
  + i+=j; 
  + }
   }
   
   /*
  - * Read response from server. We assume that all the data
  - * comes in a single packet.
  + * Read response from server. - the response should be newline 
  + * terminated according to rfc - make sure it doesn't stomp it's
  + * way out of the buffer.
*/
   
  -do
  - i = read(sock, buffer, RFC1413_MAXDATA);
  -while (i == -1 && errno == EINTR);
  -if (i == -1) {
  - ap_log_error(APLOG_MARK, APLOG_CRIT, srv,
  - "read: rfc1413: error reading response");
  - return -1;
  +i = 0;
  +memset(buffer, 0, sizeof(buffer));
  +while((cp = strchr(buffer, '\n')) == NULL && i < sizeof(buffer) - 1) {
  +int j;
  + j = read(sock, buffer+i, (sizeof(buffer) - 1) - i);
  + if (j < 0 && errno != EINTR) {
  +ap_log_error(APLOG_MARK, APLOG_CRIT, srv,
  + "read: rfc1413: error reading response");
  +return -1;
  + }
  + else if (j > 0) {
  + i+=j; 
  + }
   }
   
  -buffer[i] = '\0';
   /* RFC1413_USERLEN = 512 */
   if (sscanf(buffer, "%u , %u : USERID :%*[^:]:%512s", &rmt_port, 
&our_port,
   user) != 3 || ntohs(rmt_sin->sin_port) != rmt_port