MINOR: stream_interface: add reporting of ressouce allocation errors

SSL and keep-alive will need to be able to fail on allocation errors,
and the stream interface did not allow to report such a cause. The flag
will then be "RC" as already documented.
diff --git a/include/types/stream_interface.h b/include/types/stream_interface.h
index afe1ec8..f0b63c4 100644
--- a/include/types/stream_interface.h
+++ b/include/types/stream_interface.h
@@ -57,10 +57,11 @@
 	SI_ET_CONN_TO    = 0x0008,  /* connection timeout */
 	SI_ET_CONN_ERR   = 0x0010,  /* connection error (eg: no server available) */
 	SI_ET_CONN_ABRT  = 0x0020,  /* connection aborted by external cause (eg: abort) */
-	SI_ET_CONN_OTHER = 0x0040,  /* connection aborted for other reason (eg: 500) */
-	SI_ET_DATA_TO    = 0x0080,  /* timeout during data phase */
-	SI_ET_DATA_ERR   = 0x0100,  /* error during data phase */
-	SI_ET_DATA_ABRT  = 0x0200,  /* data phase aborted by external cause */
+	SI_ET_CONN_RES   = 0x0040,  /* connection aborted due to lack of resources */
+	SI_ET_CONN_OTHER = 0x0080,  /* connection aborted for other reason (eg: 500) */
+	SI_ET_DATA_TO    = 0x0100,  /* timeout during data phase */
+	SI_ET_DATA_ERR   = 0x0200,  /* error during data phase */
+	SI_ET_DATA_ABRT  = 0x0400,  /* data phase aborted by external cause */
 };
 
 /* flags set after I/O (16 bit) */
diff --git a/src/proto_http.c b/src/proto_http.c
index a7e42fc..900f747 100644
--- a/src/proto_http.c
+++ b/src/proto_http.c
@@ -936,6 +936,9 @@
 	else if (err_type & SI_ET_CONN_ERR)
 		http_server_error(s, si, SN_ERR_SRVCL, SN_FINST_C,
 				  503, http_error_message(s, HTTP_ERR_503));
+	else if (err_type & SI_ET_CONN_RES)
+		http_server_error(s, si, SN_ERR_RESOURCE, SN_FINST_C,
+				  503, http_error_message(s, HTTP_ERR_503));
 	else /* SI_ET_CONN_OTHER and others */
 		http_server_error(s, si, SN_ERR_INTERNAL, SN_FINST_C,
 				  500, http_error_message(s, HTTP_ERR_500));
diff --git a/src/session.c b/src/session.c
index 1183d91..75ac04c 100644
--- a/src/session.c
+++ b/src/session.c
@@ -2576,6 +2576,10 @@
 		err = SN_ERR_SRVCL;
 		fin = SN_FINST_C;
 	}
+	else if (err_type & SI_ET_CONN_RES) {
+		err = SN_ERR_RESOURCE;
+		fin = SN_FINST_C;
+	}
 	else /* SI_ET_CONN_OTHER and others */ {
 		err = SN_ERR_INTERNAL;
 		fin = SN_FINST_C;