Commit Diff


commit - 72bbed91365401d14492dac426401476986c84cf
commit + c4f682f8559b184d64b04aece37d3d2980859832
blob - 862792f230182cda45b185648eac56aabb4efe95
blob + f11ffbba64549c8948b4d2562dafd5dd78235ea5
--- gmid.h
+++ gmid.h
@@ -243,7 +243,7 @@ char		*utf8_nth(char*, size_t);
 
 /* iri.c */
 int		 parse_iri(char*, struct iri*, const char**);
-int		 trim_req_iri(char*);
+int		 trim_req_iri(char*, const char **);
 
 /* puny.c */
 int		 puny_decode(const char*, char*, size_t);
blob - beba36872d89965202880fa3660a2cb55a581e10
blob + f7cb627c73213f73bcf164b9009909dc8953b4b4
--- iri.c
+++ iri.c
@@ -364,12 +364,14 @@ parse_iri(char *iri, struct iri *ret, const char **err
 }
 
 int
-trim_req_iri(char *iri)
+trim_req_iri(char *iri, const char **err)
 {
 	char *i;
 
-	if ((i = strstr(iri, "\r\n")) == NULL)
+	if ((i = strstr(iri, "\r\n")) == NULL) {
+		*err = "missing CRLF";
 		return 0;
+	}
 	*i = '\0';
 	return 1;
 }
blob - 1383974840e1981cd7812d1bcb55f61586468d89
blob + d0e5e4bd22f891050cb5a74b19f084005badb2db
--- server.c
+++ server.c
@@ -308,8 +308,10 @@ handle_open_conn(struct pollfd *fds, struct client *c)
 		return;
 	}
 
-	if (!trim_req_iri(c->req) || !parse_iri(c->req, &c->iri, &parse_err)) {
-		start_reply(fds, c, BAD_REQUEST, parse_err);
+	if (!trim_req_iri(c->req, &parse_err)
+	    || !parse_iri(c->req, &c->iri, &parse_err)) {
+		LOGI(c, "iri parse error: %s", parse_err);
+		start_reply(fds, c, BAD_REQUEST, "invalid request");
 		return;
 	}