Simplify check_header_result() a bit.
[privoxy.git] / gateway.c
index a32d531..a8da953 100644 (file)
--- a/gateway.c
+++ b/gateway.c
@@ -1,4 +1,4 @@
-const char gateway_rcs[] = "$Id: gateway.c,v 1.67 2011/01/09 12:08:52 fabiankeil Exp $";
+const char gateway_rcs[] = "$Id: gateway.c,v 1.72 2011/03/27 14:00:36 fabiankeil Exp $";
 /*********************************************************************
  *
  * File        :  $Source: /cvsroot/ijbswa/current/gateway.c,v $
@@ -88,21 +88,24 @@ static jb_socket socks5_connect(const struct forward_spec *fwd,
                                 int target_port,
                                 struct client_state *csp);
 
+enum {
+   SOCKS4_REQUEST_GRANTED        =  90,
+   SOCKS4_REQUEST_REJECT         =  91,
+   SOCKS4_REQUEST_IDENT_FAILED   =  92,
+   SOCKS4_REQUEST_IDENT_CONFLICT =  93
+};
 
-#define SOCKS_REQUEST_GRANTED          90
-#define SOCKS_REQUEST_REJECT           91
-#define SOCKS_REQUEST_IDENT_FAILED     92
-#define SOCKS_REQUEST_IDENT_CONFLICT   93
-
-#define SOCKS5_REQUEST_GRANTED             0
-#define SOCKS5_REQUEST_FAILED              1
-#define SOCKS5_REQUEST_DENIED              2
-#define SOCKS5_REQUEST_NETWORK_UNREACHABLE 3
-#define SOCKS5_REQUEST_HOST_UNREACHABLE    4
-#define SOCKS5_REQUEST_CONNECTION_REFUSED  5
-#define SOCKS5_REQUEST_TTL_EXPIRED         6
-#define SOCKS5_REQUEST_PROTOCOL_ERROR      7
-#define SOCKS5_REQUEST_BAD_ADDRESS_TYPE    8
+enum {
+   SOCKS5_REQUEST_GRANTED             = 0,
+   SOCKS5_REQUEST_FAILED              = 1,
+   SOCKS5_REQUEST_DENIED              = 2,
+   SOCKS5_REQUEST_NETWORK_UNREACHABLE = 3,
+   SOCKS5_REQUEST_HOST_UNREACHABLE    = 4,
+   SOCKS5_REQUEST_CONNECTION_REFUSED  = 5,
+   SOCKS5_REQUEST_TTL_EXPIRED         = 6,
+   SOCKS5_REQUEST_PROTOCOL_ERROR      = 7,
+   SOCKS5_REQUEST_BAD_ADDRESS_TYPE    = 8
+};
 
 /* structure of a socks client operation */
 struct socks_op {
@@ -806,12 +809,8 @@ static jb_socket socks4_connect(const struct forward_spec * fwd,
 
    if (sfd == JB_INVALID_SOCKET)
    {
-      /*
-       * XXX: connect_to should fill in the exact reason.
-       * Most likely resolving the IP of the forwarder failed.
-       */
-      errstr = "connect_to failed: see logfile for details";
-      err = 1;
+      /* The error an its reason have already been logged by connect_to()  */
+      return(JB_INVALID_SOCKET);
    }
    else if (!data_is_available(sfd, csp->config->socket_timeout))
    {
@@ -850,18 +849,18 @@ static jb_socket socks4_connect(const struct forward_spec * fwd,
 
    switch (s->cd)
    {
-      case SOCKS_REQUEST_GRANTED:
+      case SOCKS4_REQUEST_GRANTED:
          return(sfd);
-      case SOCKS_REQUEST_REJECT:
+      case SOCKS4_REQUEST_REJECT:
          errstr = "SOCKS request rejected or failed.";
          errno = EINVAL;
          break;
-      case SOCKS_REQUEST_IDENT_FAILED:
+      case SOCKS4_REQUEST_IDENT_FAILED:
          errstr = "SOCKS request rejected because "
             "SOCKS server cannot connect to identd on the client.";
          errno = EACCES;
          break;
-      case SOCKS_REQUEST_IDENT_CONFLICT:
+      case SOCKS4_REQUEST_IDENT_CONFLICT:
          errstr = "SOCKS request rejected because "
             "the client program and identd report "
             "different user-ids.";
@@ -1100,7 +1099,7 @@ static jb_socket socks5_connect(const struct forward_spec *fwd,
    }
    else if (server_size > 20)
    {
-      /* This is somewhat unexpected but doesn't realy matter. */
+      /* This is somewhat unexpected but doesn't really matter. */
       log_error(LOG_LEVEL_CONNECT, "socks5_connect: read %d bytes "
          "from socks server. Would have accepted up to %d.",
          server_size, sizeof(sbuf));