* Copyright (c) 1995-2003, Index Data
* See the file LICENSE for details.
*
- * $Id: tcpip.c,v 1.54 2003-02-20 15:10:24 adam Exp $
+ * $Id: tcpip.c,v 1.57 2003-05-13 14:21:13 adam Exp $
*/
#include <stdio.h>
#include <stdlib.h>
#ifdef WIN32
-#include <unistd.h>
#else
+#include <unistd.h>
#endif
#include <errno.h>
#include <yaz/comstack.h>
#include <yaz/tcpip.h>
#include <yaz/log.h>
+#include <yaz/nmem.h>
#ifdef WIN32
#else
#include <netinet/tcp.h>
#endif
-/* Chas added the following, so we get the definition of completeBER */
-#include <yaz/odr.h>
-
static int tcpip_close(COMSTACK h);
static int tcpip_put(COMSTACK h, char *buf, int size);
static int tcpip_get(COMSTACK h, char **buf, int *bufsize);
if (protocol == PROTO_WAIS)
state->complete = completeWAIS;
else
- state->complete = completeBER;
+ state->complete = cs_complete_auto;
p->timeout = COMSTACK_DEFAULT_TIMEOUT;
TRC(fprintf(stderr, "Created new TCPIP comstack\n"));
}
#endif
-int tcpip_strtoaddr_ex(const char *str, struct sockaddr_in *add)
+int tcpip_strtoaddr_ex(const char *str, struct sockaddr_in *add,
+ int default_port)
{
struct hostent *hp;
char *p, buf[512];
- short int port = 210;
+ short int port = default_port;
unsigned tmpadd;
if (!tcpip_init ())
void *tcpip_straddr(COMSTACK h, const char *str)
{
tcpip_state *sp = (tcpip_state *)h->cprivate;
+ int port = 210;
+
+ if (h->protocol == PROTO_HTTP)
+ port = 80;
- if (!tcpip_strtoaddr_ex (str, &sp->addr))
+ if (!tcpip_strtoaddr_ex (str, &sp->addr, port))
return 0;
return &sp->addr;
}
{
static struct sockaddr_in add;
- if (!tcpip_strtoaddr_ex (str, &add))
+ if (!tcpip_strtoaddr_ex (str, &add, 210))
return 0;
return &add;
}
int r;
#ifdef __sun__
int recbuflen;
- socklen_t rbufsize = sizeof(recbuflen);
+ YAZ_SOCKLEN_T rbufsize = sizeof(recbuflen);
#endif
TRC(fprintf(stderr, "tcpip_connect\n"));
h->io_pending = 0;
r = (char*) host->h_name;
else
r = inet_ntoa(addr.sin_addr);
- sprintf(buf, "tcp:%s", r);
+ if (h->protocol == PROTO_HTTP)
+ sprintf(buf, "http:%s", r);
+ else
+ sprintf(buf, "tcp:%s", r);
#if HAVE_OPENSSL_SSL_H
if (sp->ctx)
- sprintf(buf, "ssl:%s", r);
+ {
+ if (h->protocol == PROTO_HTTP)
+ sprintf(buf, "https:%s", r);
+ else
+ sprintf(buf, "ssl:%s", r);
+ }
#endif
return buf;
}