 a31cfe3283
			
		
	
	a31cfe3283
	
	
	
		
			
			The server_supports_v2() helper lets a caller find out if the server
supports a feature, and will optionally die if it's not supported. This
makes the return value confusing, as it's only meaningful when the
function is not asked to die.
Coverity flagged a new call like:
  /* check that we support "foo" */
  server_supports_v2("foo", 1);
complaining that we usually checked the return value, but this time we
didn't. But this call is correct, and other ones that did:
  if (server_supports_v2("foo", 1))
          do_something_with_foo();
are "wrong", in the sense that we know the conditional will always be
true (but there's no bug; the code is simply misleading).
Let's split the "die" behavior into its own function which returns void,
and modify each caller to use the correct one.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
		
	
		
			
				
	
	
		
			34 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef CONNECT_H
 | |
| #define CONNECT_H
 | |
| 
 | |
| #include "protocol.h"
 | |
| 
 | |
| #define CONNECT_VERBOSE       (1u << 0)
 | |
| #define CONNECT_DIAG_URL      (1u << 1)
 | |
| #define CONNECT_IPV4          (1u << 2)
 | |
| #define CONNECT_IPV6          (1u << 3)
 | |
| struct child_process *git_connect(int fd[2], const char *url, const char *prog, int flags);
 | |
| int finish_connect(struct child_process *conn);
 | |
| int git_connection_is_socket(struct child_process *conn);
 | |
| int server_supports(const char *feature);
 | |
| int parse_feature_request(const char *features, const char *feature);
 | |
| const char *server_feature_value(const char *feature, int *len_ret);
 | |
| int url_is_local_not_ssh(const char *url);
 | |
| 
 | |
| struct packet_reader;
 | |
| enum protocol_version discover_version(struct packet_reader *reader);
 | |
| 
 | |
| int server_supports_hash(const char *desired, int *feature_supported);
 | |
| const char *parse_feature_value(const char *feature_list, const char *feature, int *lenp, int *offset);
 | |
| int server_supports_v2(const char *c);
 | |
| void ensure_server_supports_v2(const char *c);
 | |
| int server_feature_v2(const char *c, const char **v);
 | |
| int server_supports_feature(const char *c, const char *feature,
 | |
| 			    int die_on_error);
 | |
| 
 | |
| void check_stateless_delimiter(int stateless_rpc,
 | |
| 			       struct packet_reader *reader,
 | |
| 			       const char *error);
 | |
| 
 | |
| #endif
 |