Doxyfile file description. Indentation. No change of code.
[yaz-moved-to-github.git] / src / comstack.c
index ba1cad3..c943c46 100644 (file)
@@ -2,7 +2,12 @@
  * Copyright (c) 1995-2004, Index Data
  * See the file LICENSE for details.
  *
- * $Id: comstack.c,v 1.10 2004-05-03 09:00:50 adam Exp $
+ * $Id: comstack.c,v 1.13 2004-10-15 00:19:00 adam Exp $
+ */
+
+/** 
+ * \file comstack.c
+ * \brief Implements Generic COMSTACK functions
  */
 
 #include <string.h>
@@ -148,11 +153,18 @@ int cs_complete_auto(const unsigned char *buf, int len)
     {
         /* deal with HTTP request/response */
        int i = 2, content_len = 0, chunked = 0;
+       
+       /* if dealing with HTTP responses - then default
+          content length is unlimited (socket close) */
+       if (!memcmp(buf, "HTTP/", 5))
+           content_len = -1; 
 
         while (i <= len-4)
         {
            if (i > 8192)
+           {
                return i;  /* do not allow more than 8K HTTP header */
+           }
             if (buf[i] == '\r' && buf[i+1] == '\n')
             {
                 i += 2;
@@ -236,8 +248,12 @@ int cs_complete_auto(const unsigned char *buf, int len)
                     {   /* not chunked ; inside body */
                         /* i += 2 seems not to work with GCC -O2 .. 
                            so i+2 is used instead .. */
-                        if (len >= (i+2)+ content_len)
+                       if (content_len == -1)
+                           return 0;   /* no content length */
+                        else if (len >= (i+2)+ content_len)
+                       {
                             return (i+2)+ content_len;
+                       }
                     }
                     break;
                 }