* Copyright (c) 1995-2003, Index Data
* See the file LICENSE for details.
*
- * $Id: tcpip.c,v 1.55 2003-02-21 12:08:57 adam Exp $
+ * $Id: tcpip.c,v 1.58 2003-05-20 20:33:29 adam Exp $
*/
#include <stdio.h>
}
#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 (!tcpip_strtoaddr_ex (str, &sp->addr))
+ if (h->protocol == PROTO_HTTP)
+ port = 80;
+
+ 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;
return -1;
#ifdef __sun__
yaz_set_errno( 0 );
- // unfortunatly, sun sometimes forgets to set errno in recv
- // when EWOULDBLOCK etc. would be required (res = -1)
+ /* unfortunatly, sun sometimes forgets to set errno in recv
+ when EWOULDBLOCK etc. would be required (res = -1) */
#endif
res = recv(h->iofile, *buf + hasread, CS_TCPIP_BUFCHUNK, 0);
TRC(fprintf(stderr, " recv res=%d, hasread=%d\n", res, hasread));
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;
}