Correctly set recsyn in search
[pazpar2-moved-to-github.git] / src / http.c
index 5430f6e..3408089 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: http.c,v 1.4 2006-12-21 04:27:17 quinn Exp $
+ * $Id: http.c,v 1.9 2007-01-10 11:56:10 adam Exp $
  */
 
 #include <stdio.h>
 #include <errno.h>
 #include <assert.h>
 
+#if HAVE_CONFIG_H
+#include <cconfig.h>
+#endif
+
+#include <netinet/in.h>
+
 #include <yaz/yaz-util.h>
 #include <yaz/comstack.h>
 #include <netdb.h>
 
-#include "command.h"
 #include "util.h"
 #include "eventl.h"
 #include "pazpar2.h"
@@ -89,10 +94,10 @@ static struct http_buf *http_buf_bybuf(char *b, int len)
 
     while (len)
     {
-        *p = http_buf_create();
         int tocopy = len;
         if (tocopy > HTTP_BUF_SIZE)
             tocopy = HTTP_BUF_SIZE;
+        *p = http_buf_create();
         memcpy((*p)->buf, b, tocopy);
         (*p)->len = tocopy;
         len -= tocopy;
@@ -372,9 +377,9 @@ struct http_request *http_parse_request(struct http_channel *c, struct http_buf
 static struct http_buf *http_serialize_response(struct http_channel *c,
         struct http_response *r)
 {
-    wrbuf_rewind(c->wrbuf);
     struct http_header *h;
 
+    wrbuf_rewind(c->wrbuf);
     wrbuf_printf(c->wrbuf, "HTTP/1.1 %s %s\r\n", r->code, r->msg);
     for (h = r->headers; h; h = h->next)
         wrbuf_printf(c->wrbuf, "%s: %s\r\n", h->name, h->value);
@@ -392,10 +397,10 @@ static struct http_buf *http_serialize_response(struct http_channel *c,
 static struct http_buf *http_serialize_request(struct http_request *r)
 {
     struct http_channel *c = r->channel;
-    wrbuf_rewind(c->wrbuf);
     struct http_header *h;
     struct http_argument *a;
 
+    wrbuf_rewind(c->wrbuf);
     wrbuf_printf(c->wrbuf, "%s %s", r->method, r->path);
 
     if (r->arguments)
@@ -492,8 +497,10 @@ static int http_proxy(struct http_request *rq)
 void http_send_response(struct http_channel *ch)
 {
     struct http_response *rs = ch->response;
+    struct http_buf *hb;
+
     assert(rs);
-    struct http_buf *hb = http_serialize_response(ch, rs);
+    hb = http_serialize_response(ch, rs);
     if (!hb)
     {
         yaz_log(YLOG_WARN, "Failed to serialize HTTP response");
@@ -782,7 +789,7 @@ void http_init(const char *addr)
 
     yaz_log(YLOG_LOG, "HTTP listener is %s", addr);
 
-    bzero(&myaddr, sizeof myaddr);
+    memset(&myaddr, 0, sizeof myaddr);
     myaddr.sin_family = AF_INET;
     pp = strchr(addr, ':');
     if (pp)