-const char gateway_rcs[] = "$Id: gateway.c,v 1.4 2001/07/24 12:47:06 oes Exp $";
+const char gateway_rcs[] = "$Id: gateway.c,v 1.9 2001/10/25 03:40:48 david__schmidt Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/gateway.c,v $
* IJBSWA team. http://ijbswa.sourceforge.net
*
* Based on the Internet Junkbuster originally written
- * by and Copyright (C) 1997 Anonymous Coders and
+ * by and Copyright (C) 1997 Anonymous Coders and
* Junkbusters Corporation. http://www.junkbusters.com
*
- * This program is free software; you can redistribute it
+ * This program is free software; you can redistribute it
* and/or modify it under the terms of the GNU General
* Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at
*
* Revisions :
* $Log: gateway.c,v $
+ * Revision 1.9 2001/10/25 03:40:48 david__schmidt
+ * Change in porting tactics: OS/2's EMX porting layer doesn't allow multiple
+ * threads to call select() simultaneously. So, it's time to do a real, live,
+ * native OS/2 port. See defines for __EMX__ (the porting layer) vs. __OS2__
+ * (native). Both versions will work, but using __OS2__ offers multi-threading.
+ *
+ * Revision 1.8 2001/09/13 20:10:12 jongfoster
+ * Fixing missing #include under Windows
+ *
+ * Revision 1.7 2001/09/12 17:58:26 steudten
+ *
+ * add #include <string.h>
+ *
+ * Revision 1.6 2001/09/10 10:41:16 oes
+ * Added #include in.h
+ *
+ * Revision 1.5 2001/07/29 18:47:57 jongfoster
+ * Adding missing #include project.h
+ *
* Revision 1.4 2001/07/24 12:47:06 oes
* Applied BeOS support update by Eugenia
*
#include <stdio.h>
#include <sys/types.h>
+
+#ifndef _WIN32
+#include <netinet/in.h>
+#endif
+
#include <errno.h>
+#include <string.h>
#ifdef _WIN32
#include <winsock2.h>
#include <netdb.h>
#endif /* def __BEOS__ */
+#ifdef __OS2__
+#include <utils.h>
+#endif /* def __OS2__ */
+
#include "project.h"
#include "jcc.h"
#include "errlog.h"
const char gateway_h_rcs[] = GATEWAY_H_VERSION;
-static int socks4_connect(const struct forward_spec * fwd,
+static int socks4_connect(const struct forward_spec * fwd,
const char * target_host,
int target_port,
struct client_state *csp);
* Returns : -1 => failure, else it is the socket file descriptor.
*
*********************************************************************/
-int forwarded_connect(const struct forward_spec * fwd,
- struct http_request *http,
+int forwarded_connect(const struct forward_spec * fwd,
+ struct http_request *http,
struct client_state *csp)
{
const char * dest_host;
* Returns : -1 => failure, else a socket file descriptor.
*
*********************************************************************/
-static int socks4_connect(const struct forward_spec * fwd,
+static int socks4_connect(const struct forward_spec * fwd,
const char * target_host,
int target_port,
struct client_state *csp)
{
int web_server_addr;
- unsigned char cbuf[BUFFER_SIZE];
- unsigned char sbuf[BUFFER_SIZE];
+ char cbuf[BUFFER_SIZE];
+ char sbuf[BUFFER_SIZE];
struct socks_op *c = (struct socks_op *)cbuf;
struct socks_reply *s = (struct socks_reply *)sbuf;
int n;
- int csiz;
+ size_t csiz;
int sfd;
int err = 0;
char *errstr;
{
case SOCKS_4:
web_server_addr = htonl(resolve_hostname_to_ip(target_host));
+ if (web_server_addr == INADDR_NONE)
+ {
+ log_error(LOG_LEVEL_CONNECT, "socks4_connect: could not resolve target host %s", target_host);
+ return(-1);
+ }
break;
case SOCKS_4A:
web_server_addr = 0x00000001;
errno = EINVAL;
return(-1);
}
- strcpy(((char *)cbuf) + csiz, target_host);
+ strcpy(cbuf + csiz, target_host);
csiz = n;
break;
default:
errno = EACCES;
break;
default:
- errstr = (char *) cbuf;
+ errstr = cbuf;
errno = ENOENT;
sprintf(errstr,
"SOCKS request rejected for reason code %d\n", s->cd);