summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2019-09-12 02:35:44 -0400
committerJune McEnroe <june@causal.agency>2019-09-12 02:35:44 -0400
commit19ee58321dcb01049ee9f23571d2d1ed2ef2e340 (patch)
treeb44e651480bd64d772cda80f34e9faa86bd90ad2
parentAdd title -v flag (diff)
downloadsrc-19ee58321dcb01049ee9f23571d2d1ed2ef2e340.tar.gz
src-19ee58321dcb01049ee9f23571d2d1ed2ef2e340.zip
Consume entire body
Aborting the request and leaving data around may be causing intermittent
errors. Just discard the rest of the data.
-rw-r--r--bin/title.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/bin/title.c b/bin/title.c
index c5b6bbf0..3ea54e4e 100644
--- a/bin/title.c
+++ b/bin/title.c
@@ -82,6 +82,7 @@ static void showTitle(const char *title) {
 }
 
 static CURL *curl;
+static bool title;
 static struct {
 	char buf[8192];
 	size_t len;
@@ -93,11 +94,10 @@ static regex_t TitleRegex;
 
 static size_t handleBody(char *buf, size_t size, size_t nitems, void *user) {
 	(void)user;
-
 	size_t len = size * nitems;
 	size_t cap = sizeof(body.buf) - body.len - 1;
 	size_t new = (len < cap ? len : cap);
-	if (!new) return 0;
+	if (title || !new) return len;
 
 	memcpy(&body.buf[body.len], buf, new);
 	body.len += new;
@@ -107,7 +107,9 @@ static size_t handleBody(char *buf, size_t size, size_t nitems, void *user) {
 	if (regexec(&TitleRegex, body.buf, 2, match, 0)) return len;
 	body.buf[match[1].rm_eo] = '\0';
 	showTitle(&body.buf[match[1].rm_so]);
-	return 0;
+	title = true;
+
+	return len;
 }
 
 static CURLcode fetchTitle(const char *url) {
@@ -124,9 +126,9 @@ static CURLcode fetchTitle(const char *url) {
 	if (!type || strncmp(type, "text/html", 9)) return CURLE_OK;
 
 	body.len = 0;
+	title = false;
 	curl_easy_setopt(curl, CURLOPT_NOBODY, 0L);
 	code = curl_easy_perform(curl);
-	if (code == CURLE_WRITE_ERROR) return CURLE_OK;
 	return code;
 }
 
2018-08-24Show hostname in title over SSHJune McEnroe 2018-08-23Alias bc='bc -l'June McEnroe 2018-08-20Update usage of scheme in READMEJune McEnroe 2018-08-20Use scheme.h in fbatt and fbclockJune McEnroe 2018-08-20Generate scheme.hJune McEnroe 2018-08-20Add dependencies on gfx.hJune McEnroe 2018-08-18Add Blondie — Heart of GlassJune McEnroe Why didn't I know about this song? I love it. 2018-08-18Set FCEDIT=$EDITORJune McEnroe 2018-08-18Only post commits with bodies to MastodonJune McEnroe 2018-08-18Run tf/cfg link script with /bin/shJune McEnroe 2018-08-18Run {,s,t}up with /bin/shJune McEnroe 2018-08-18Use whence instead of typeJune McEnroe type is an alias for whence -v and is more for human consumption. 2018-08-18Cut off path components until right prompt fitsJune McEnroe Keeps paths valid (from somehwere) rather than abrupt truncation. 2018-08-17Add "private" alias to source encrypted fileJune McEnroe Why is there no easy way to *edit* an encrypted file? 2018-08-17Add vim mapping to add a #includeJune McEnroe