chiark / gitweb /
debianutils: Update from 4.8.3 to 4.8.4
[termux-packages] / packages / tsocks / 06_fallback.patch
1 #! /bin/sh /usr/share/dpatch/dpatch-run
2 ## 06_fallback.dpatch by Tamas SZERB <toma@rulez.org>
3 ##
4 ## All lines beginning with `## DP:' are a description of the patch.
5 ## DP: Establish direct connection instead of sockified if
6 ## DP: there is no default server specified and the
7 ## DP: fallback = yes.
8
9 --- a/parser.h
10 +++ b/parser.h
11 @@ -33,6 +33,7 @@ struct parsedfile {
12     struct netent *localnets;
13     struct serverent defaultserver;
14     struct serverent *paths;
15 +   int fallback;
16  };
17  
18  /* Functions provided by parser module */
19 --- a/parser.c
20 +++ b/parser.c
21 @@ -35,6 +35,7 @@ static int handle_local(struct parsedfil
22  static int handle_defuser(struct parsedfile *, int, char *);
23  static int handle_defpass(struct parsedfile *, int, char *);
24  static int make_netent(char *value, struct netent **ent);
25 +static int handle_fallback(struct parsedfile *, int, char *);
26  
27  char __attribute__ ((visibility ("hidden")))
28  *find_config(char *line) {
29 @@ -181,6 +182,8 @@ static int handle_line(struct parsedfile
30                                 handle_defpass(config, lineno, words[2]);
31                         } else if (!strcmp(words[0], "local")) {
32                                 handle_local(config, lineno, words[2]);
33 +                       } else if (!strcmp(words[0], "fallback")) {
34 +                               handle_fallback(config, lineno, words[2]);
35                         } else {
36                                 show_msg(MSGERR, "Invalid pair type (%s) specified "
37                                            "on line %d in configuration file, "
38 @@ -512,6 +515,19 @@ static int handle_local(struct parsedfil
39         return(0);
40  }
41  
42 +static int handle_fallback(struct parsedfile *config, int lineno, char *value) {
43 +       char *v = strsplit(NULL, &value, " ");
44 +       if (config->fallback !=0) {
45 +               show_msg(MSGERR, "Fallback may only be specified "
46 +                               "once in configuration file.\n",
47 +                               lineno, currentcontext->lineno);
48 +       } else {
49 +               if(!strcmp(v, "yes")) config->fallback = 1;
50 +               if(!strcmp(v, "no")) config->fallback = 0;
51 +       }
52 +       return(0);
53 +}
54 +
55  /* Construct a netent given a string like                             */
56  /* "198.126.0.1[:portno[-portno]]/255.255.255.0"                      */
57  int make_netent(char *value, struct netent **ent) {
58 --- a/tsocks.c
59 +++ b/tsocks.c
60 @@ -294,11 +294,20 @@ int connect(CONNECT_SIGNATURE) {
61              (path->address ? path->address : "(Not Provided)"));
62     if (path->address == NULL) {
63        if (path == &(config->defaultserver)) {
64 -         show_msg(MSGERR, "Connection needs to be made "
65 -                          "via default server but "
66 -                          "the default server has not "
67 -                          "been specified. Falling back to direct connection.\n");
68 -                          return(realconnect(__fd, __addr, __len));
69 +         if (config->fallback) {
70 +            show_msg(MSGERR, "Connection needs to be made "
71 +                             "via default server but "
72 +                             "the default server has not "
73 +                             "been specified. Fallback is 'yes' so "
74 +                             "Falling back to direct connection.\n");
75 +            return(realconnect(__fd, __addr, __len));
76 +         } else {
77 +           show_msg(MSGERR, "Connection needs to be made "
78 +                            "via default server but "
79 +                            "the default server has not "
80 +                            "been specified. Fallback is 'no' so "
81 +                            "coudln't establish the connection.\n");
82 +         }
83     }
84        else 
85           show_msg(MSGERR, "Connection needs to be made "
86 --- a/tsocks.conf.5
87 +++ b/tsocks.conf.5
88 @@ -135,6 +135,15 @@ tsocks gives an error message and aborts
89  This parameter protects the user against accidentally establishing
90  unwanted unsockified (ie. direct) connection.
91  
92 +.TP
93 +.I fallback
94 +This directive allows to fall back to direct connection if no default
95 +server present in the configuration and fallback = yes.
96 +If fallback = no or not specified and there is no default server, the 
97 +tsocks gives an error message and aborts.
98 +This parameter protects the user against accidentally establishing
99 +unwanted unsockified (ie. direct) connection.
100 +
101  .SH UTILITIES
102  tsocks comes with two utilities that can be useful in creating and verifying
103  the tsocks configuration file.