Update comstack example a bit
[yaz-moved-to-github.git] / test / test_comstack.c
index 9ebc491..fedf567 100644 (file)
@@ -1,5 +1,5 @@
 /* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2012 Index Data
+ * Copyright (C) Index Data
  * See the file LICENSE for details.
  */
 #if HAVE_CONFIG_H
@@ -173,6 +173,20 @@ static void tst_http_response(void)
         YAZ_CHECK_EQ(cs_complete_auto(http_buf, 24), 0);
     }
     {
+        /* no content, no headers */
+        const char *http_buf =
+            /*123456789012345678 */
+            "HTTP/1.1 204 OK\r\n"
+            "\r\n"
+            "HTTP/1.1 200 OK\r\n";
+
+        YAZ_CHECK_EQ(cs_complete_auto(http_buf, 1), 0);
+        YAZ_CHECK_EQ(cs_complete_auto(http_buf, 2), 0);
+        YAZ_CHECK_EQ(cs_complete_auto(http_buf, 18), 0);
+        YAZ_CHECK_EQ(cs_complete_auto(http_buf, 19), 19);
+        YAZ_CHECK_EQ(cs_complete_auto(http_buf, 24), 19);
+    }
+    {
         /* response, content  */
         const char *http_buf =
             /*123456789012345678 */
@@ -209,18 +223,23 @@ static int comstack_example(const char *server_address_str)
     }
 
     server_address_ip = cs_straddr(stack, server_address_str);
-    if (!server_address_ip)
-    {
+    if (!server_address_ip) {
         fprintf(stderr, "cs_straddr: address could not be resolved\n");
         return -1;
     }
 
     status = cs_connect(stack, server_address_ip);
-    if (status != 0) {
+    if (status) {
         fprintf(stderr, "cs_connect: %s\n", cs_strerror(stack));
         return -1;
     }
 
+    status = cs_rcvconnect(stack);
+    if (status) {
+        fprintf(stderr, "cs_rcvconnect: %s\n", cs_strerror(stack));
+        return -1;
+    }
+
     status = cs_put(stack, protocol_package, protocol_package_length);
     if (status) {
         fprintf(stderr, "cs_put: %s\n", cs_strerror(stack));
@@ -228,7 +247,6 @@ static int comstack_example(const char *server_address_str)
     }
 
     /* Now get a response */
-
     length_incoming = cs_get(stack, &buf, &size);
     if (!length_incoming) {
         fprintf(stderr, "Connection closed\n");
@@ -244,7 +262,7 @@ static int comstack_example(const char *server_address_str)
     /* clean up */
     cs_close(stack);
     if (buf)
-        free(buf);
+        xfree(buf);
     return 0;
 }