summary refs log tree commit diff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--bounce.h1
-rw-r--r--client.c8
-rw-r--r--pounce.13
-rw-r--r--state.c7
4 files changed, 16 insertions, 3 deletions
diff --git a/bounce.h b/bounce.h
index a4b1a91..1655772 100644
--- a/bounce.h
+++ b/bounce.h
@@ -69,6 +69,7 @@ static inline struct Message parse(char *line) {
 	X("account-tag", CapAccountTag) \
 	X("away-notify", CapAwayNotify) \
 	X("batch", CapBatch) \
+	X("cap-notify", CapCapNotify) \
 	X("causal.agency/passive", CapPassive) \
 	X("chghost", CapChghost) \
 	X("extended-join", CapExtendedJoin) \
diff --git a/client.c b/client.c
index c472f51..2d5b8e0 100644
--- a/client.c
+++ b/client.c
@@ -421,6 +421,13 @@ static const char *filterBatch(const char *line) {
 	return (wordcmp(line, 0, "BATCH") ? line : NULL);
 }
 
+static const char *filterCapNotify(const char *line) {
+	if (wordcmp(line, 0, "CAP")) return line;
+	if (!wordcmp(line, 1, "NEW")) return NULL;
+	if (!wordcmp(line, 1, "DEL")) return NULL;
+	return line;
+}
+
 static const char *filterChghost(const char *line) {
 	return (wordcmp(line, 0, "CHGHOST") ? line : NULL);
 }
@@ -488,6 +495,7 @@ static Filter *Filters[] = {
 	[CapAccountNotifyBit] = filterAccountNotify,
 	[CapAwayNotifyBit] = filterAwayNotify,
 	[CapBatchBit] = filterBatch,
+	[CapCapNotifyBit] = filterCapNotify,
 	[CapChghostBit] = filterChghost,
 	[CapExtendedJoinBit] = filterExtendedJoin,
 	[CapInviteNotifyBit] = filterInviteNotify,
diff --git a/pounce.1 b/pounce.1
index 58a0532..ef28279 100644
--- a/pounce.1
+++ b/pounce.1
@@ -1,4 +1,4 @@
-.Dd February 26, 2020
+.Dd February 27, 2020
 .Dt POUNCE 1
 .Os
 .
@@ -341,6 +341,7 @@ is supported:
 .Sy account-tag ,
 .Sy away-notify ,
 .Sy batch ,
+.Sy cap-notify ,
 .Sy chghost ,
 .Sy extended-join ,
 .Sy invite-notify ,
diff --git a/state.c b/state.c
index c714628..d840018 100644
--- a/state.c
+++ b/state.c
@@ -74,9 +74,9 @@ static void handleCap(struct Message *msg) {
 	require(msg, false, 3);
 	enum Cap caps = capParse(msg->params[2]);
 
-	if (!strcmp(msg->params[1], "LS")) {
+	if (!strcmp(msg->params[1], "LS") || !strcmp(msg->params[1], "NEW")) {
 		caps &= ~(CapSASL | CapUnsupported);
-		serverFormat("CAP REQ :%s\r\n", capList(caps));
+		if (caps) serverFormat("CAP REQ :%s\r\n", capList(caps));
 
 	} else if (!strcmp(msg->params[1], "ACK")) {
 		stateCaps |= caps;
@@ -87,6 +87,9 @@ static void handleCap(struct Message *msg) {
 		}
 		if (!(stateCaps & CapSASL)) serverFormat("CAP END\r\n");
 
+	} else if (!strcmp(msg->params[1], "DEL")) {
+		stateCaps &= ~caps;
+
 	} else if (!strcmp(msg->params[1], "NAK")) {
 		errx(EX_CONFIG, "server does not support %s", msg->params[2]);
 	}
querystring parsing. If --nocache is specified (or set in /etc/gitrc), caching is disabled and cgit instead generates pages to stdout. The combined effect of these two changes makes testing/debugging a lot less painfull. Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2006-12-16Add head comment to shared.cLars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2006-12-16Add head comment to ui-commit.cLars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2006-12-16gitweb ripoff: set tr:hover to highligt current rowLars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2006-12-16Make repo header a link to summary pageLars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2006-12-16Move cgit_print_date into ui-shared, reuse in ui-summaryLars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2006-12-16Add ui-commit.c + misc ui cleanupsLars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2006-12-15Add a common commit parserLars Hjemli Make a better commit parser, replacing the ugly one in ui-log.c Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2006-12-14Add simple pager to log pageLars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2006-12-13Add separate makefile-rule to clear current cacheLars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2006-12-13Remove implementation details from READMELars Hjemli Let README describe the "bigger picture" instead. Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2006-12-13Small layout adjustments to summary and blob viewLars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2006-12-13Add display of tree content w/ui-tree.cLars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2006-12-12cache_lock: do xstrdup/free on lockfileLars Hjemli Since fmt() uses 8 alternating static buffers, and cache_lock might call cache_create_dirs() multiple times, which in turn might call fmt() twice, after four iterations lockfile would be overwritten by a cachedirectory path. In worst case, this could cause the cachedirectory to be unlinked and replaced by a cachefile. Fix: use xstrdup() on the result from fmt() before assigning to lockfile, and call free(lockfile) before exit. Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2006-12-11Don't truncate valid cachefilesLars Hjemli An embarrassing thinko in cgit_check_cache() would truncate valid cachefiles in the following situation: 1) process A notices a missing/expired cachefile 2) process B gets scheduled, locks, fills and unlocks the cachefile 3) process A gets scheduled, locks the cachefile, notices that the cachefile now exist/is not expired anymore, and continues to overwrite it with an empty lockfile. Thanks to Linus for noticing (again). Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2006-12-11Move global variables + callback functions into shared.cLars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2006-12-11Move functions for generic object output into ui-view.cLars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2006-12-11Move log-functions into ui-log.cLars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2006-12-11Move repo summary functions into ui-summary.cLars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2006-12-11Move functions for repolist output into ui-repolist.cLars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2006-12-11Move common output-functions into ui-shared.cLars Hjemli While at it, replace the cgit_[lib_]error constants with a proper function Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2006-12-11Rename config.c to parsing.c + move cgit_parse_query from cgit.c to parsing.cLars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2006-12-11Avoid infinite loops in caching layerLars Hjemli Add a global variable, cgit_max_lock_attemps, to avoid the possibility of infinite loops when failing to acquire a lockfile. This could happen on broken setups or under crazy server load. Incidentally, this also fixes a lurking bug in cache_lock() where an uninitialized returnvalue was used. Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2006-12-11Let 'make install' clear all cachefilesLars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2006-12-11Fix cache algorithm loopholeLars Hjemli This closes the door for unneccessary calls to cgit_fill_cache(). Noticed by Linus. Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2006-12-10Add version identifier in generated filesLars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2006-12-10Add license file and copyright noticesLars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com> 2006-12-10Add caching infrastructureLars Hjemli