serve: advertise session ID in v2 capabilities
When transfer.advertiseSID is true, advertise the server's session ID for all protocol v2 connections via the new session-id capability. Signed-off-by: Josh Steadmon <steadmon@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
							parent
							
								
									8073d75bbf
								
							
						
					
					
						commit
						6b5b6e422e
					
				
							
								
								
									
										14
									
								
								serve.c
								
								
								
								
							
							
						
						
									
										14
									
								
								serve.c
								
								
								
								
							|  | @ -8,6 +8,8 @@ | |||
| #include "serve.h" | ||||
| #include "upload-pack.h" | ||||
|  | ||||
| static int advertise_sid; | ||||
|  | ||||
| static int always_advertise(struct repository *r, | ||||
| 			    struct strbuf *value) | ||||
| { | ||||
|  | @ -30,6 +32,15 @@ static int object_format_advertise(struct repository *r, | |||
| 	return 1; | ||||
| } | ||||
|  | ||||
| static int session_id_advertise(struct repository *r, struct strbuf *value) | ||||
| { | ||||
| 	if (!advertise_sid) | ||||
| 		return 0; | ||||
| 	if (value) | ||||
| 		strbuf_addstr(value, trace2_session_id()); | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| struct protocol_capability { | ||||
| 	/* | ||||
| 	 * The name of the capability.  The server uses this name when | ||||
|  | @ -66,6 +77,7 @@ static struct protocol_capability capabilities[] = { | |||
| 	{ "fetch", upload_pack_advertise, upload_pack_v2 }, | ||||
| 	{ "server-option", always_advertise, NULL }, | ||||
| 	{ "object-format", object_format_advertise, NULL }, | ||||
| 	{ "session-id", session_id_advertise, NULL }, | ||||
| }; | ||||
|  | ||||
| static void advertise_capabilities(void) | ||||
|  | @ -261,6 +273,8 @@ static int process_request(void) | |||
| /* Main serve loop for protocol version 2 */ | ||||
| void serve(struct serve_options *options) | ||||
| { | ||||
| 	git_config_get_bool("transfer.advertisesid", &advertise_sid); | ||||
|  | ||||
| 	if (options->advertise_capabilities || !options->stateless_rpc) { | ||||
| 		/* serve by default supports v2 */ | ||||
| 		packet_write_fmt(1, "version 2\n"); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Josh Steadmon
						Josh Steadmon