Explorar el Código

added mime subtype xml+msrtc.pidf, needed by PA, and fixed some errors in parse tables. All types and subtypes tested by startup code in PA

Jamey Hicks hace 20 años
padre
commit
4d329576b6
Se han modificado 2 ficheros con 59 adiciones y 48 borrados
  1. 58 48
      parser/parse_content.c
  2. 1 0
      parser/parse_content.h

+ 58 - 48
parser/parse_content.c

@@ -45,7 +45,7 @@
 
 
 #define is_mime_char(_c_) \
-	(isalpha((int)_c_) || (_c_)=='-' || (_c_)=='+')
+	(isalpha((int)_c_) || (_c_)=='-' || (_c_)=='+' || (_c_)=='.')
 #define is_char_equal(_c_,_cs_) \
 	( (isalpha((int)_c_)?(((_c_)|0x20)==(_cs_)):((_c_)==(_cs_)))==1 )
 
@@ -63,18 +63,26 @@ typedef struct type_node_s {
 
 
 static type_node_t type_tree[] = {
-	{'t',TYPE_UNKNOWN,1,4},
+	{'t',TYPE_UNKNOWN,1,4}, /* 0 */
 		{'e',TYPE_UNKNOWN,1,-1},
 			{'x',TYPE_UNKNOWN,1,-1},
 				{'t',TYPE_TEXT,0,-1},
-	{'m',TYPE_UNKNOWN,1,11},
-		{'e',TYPE_UNKNOWN,1,-1},
+	{'m',TYPE_UNKNOWN,2,19}, /* 4 */
+		{'e',TYPE_UNKNOWN,1,11}, /* 5 */
 			{'s',TYPE_UNKNOWN,1,-1},
 				{'s',TYPE_UNKNOWN,1,-1},
 					{'a',TYPE_UNKNOWN,1,-1},
 						{'g',TYPE_UNKNOWN,1,-1},
 							{'e',TYPE_MESSAGE,0,-1},
-	{'a',TYPE_UNKNOWN,1,22},
+		{'u',TYPE_UNKNOWN,1,-1}, /* 11 */
+			{'l',TYPE_UNKNOWN,1,-1},
+				{'t',TYPE_UNKNOWN,1,-1},
+					{'i',TYPE_UNKNOWN,1,-1},
+						{'p',TYPE_UNKNOWN,1,-1},
+							{'a',TYPE_UNKNOWN,1,-1},
+								{'r',TYPE_UNKNOWN,1,-1},
+									{'t',TYPE_MULTIPART,0,-1},
+	{'a',TYPE_UNKNOWN,1,-1}, /* 19 */
 		{'p',TYPE_UNKNOWN,1,-1},
 			{'p',TYPE_UNKNOWN,1,-1},
 				{'l',TYPE_UNKNOWN,1,-1},
@@ -85,15 +93,6 @@ static type_node_t type_tree[] = {
 									{'i',TYPE_UNKNOWN,1,-1},
 										{'o',TYPE_UNKNOWN,1,-1},
 											{'n',TYPE_APPLICATION,0,-1},
-	{'m',TYPE_UNKNOWN,1,-1},
-		{'u',TYPE_UNKNOWN,1,-1},
-			{'l',TYPE_UNKNOWN,1,-1},
-				{'t',TYPE_UNKNOWN,1,-1},
-					{'i',TYPE_UNKNOWN,1,-1},
-						{'p',TYPE_UNKNOWN,1,-1},
-							{'a',TYPE_UNKNOWN,1,-1},
-								{'r',TYPE_UNKNOWN,1,-1},
-									{'t',TYPE_MULTIPART,0,-1},
 	};
 
 static type_node_t subtype_tree[] = {
@@ -102,18 +101,18 @@ static type_node_t subtype_tree[] = {
 			{'a',SUBTYPE_UNKNOWN,1,-1},
 				{'i',SUBTYPE_UNKNOWN,1,-1},
 					{'n',SUBTYPE_PLAIN,0,-1},
-		{'i',SUBTYPE_UNKNOWN,1,-1},
+		{'i',SUBTYPE_UNKNOWN,1,-1}, /* 5 */
 			{'d',SUBTYPE_UNKNOWN,1,-1},
 				{'f',SUBTYPE_UNKNOWN,1,-1},
-					{'i',SUBTYPE_UNKNOWN,1,-1},
-						{'+',TYPE_UNKNOWN,1,-1},
-							{'x',TYPE_UNKNOWN,1,-1},
-								{'m',TYPE_UNKNOWN,1,-1},
+					{'+',TYPE_UNKNOWN,1,-1},
+						{'x',TYPE_UNKNOWN,1,-1},
+							{'m',TYPE_UNKNOWN,1,-1},
+								{'l',SUBTYPE_PIDFXML,0,-1},
 									{'l',SUBTYPE_PIDFXML,0,-1},
-	{'s',SUBTYPE_UNKNOWN,1,16},
+	{'s',SUBTYPE_UNKNOWN,1,16}, /* 13 */
 		{'d',SUBTYPE_UNKNOWN,1,-1},
 			{'p',SUBTYPE_SDP,0,-1},
-	{'c',SUBTYPE_UNKNOWN,1,25},
+	{'c',SUBTYPE_UNKNOWN,1,25}, /* 16 */
 		{'p',SUBTYPE_UNKNOWN,2,-1},
 			{'i',SUBTYPE_UNKNOWN,1,20},
 				{'m',SUBTYPE_CPIM,0,-1},
@@ -122,31 +121,30 @@ static type_node_t subtype_tree[] = {
 					{'x',TYPE_UNKNOWN,1,-1},
 						{'m',TYPE_UNKNOWN,1,-1},
 							{'l',SUBTYPE_CPLXML,0,-1},
-	{'r',SUBTYPE_UNKNOWN,2,39},
-		{'l',SUBTYPE_UNKNOWN,1,42},
+	{'r',SUBTYPE_UNKNOWN,2,39}, /* 25 */
+		{'l',SUBTYPE_UNKNOWN,1,33},/* 26 */
 			{'m',SUBTYPE_UNKNOWN,1,-1},
 				{'i',SUBTYPE_UNKNOWN,1,-1},
 					{'+',TYPE_UNKNOWN,1,-1},
 						{'x',TYPE_UNKNOWN,1,-1},
 							{'m',TYPE_UNKNOWN,1,-1},
 								{'l',SUBTYPE_RLMIXML,0,-1},
-		{'e',SUBTYPE_UNKNOWN,1,-1},
+		{'e',SUBTYPE_UNKNOWN,1,-1}, /* 33 */
 			{'l',SUBTYPE_UNKNOWN,1,-1},
 				{'a',SUBTYPE_UNKNOWN,1,-1},
 					{'t',SUBTYPE_UNKNOWN,1,-1},
 						{'e',SUBTYPE_UNKNOWN,1,-1},
 							{'d',SUBTYPE_RELATED,0,-1},
-	{'l',SUBTYPE_UNKNOWN,1,49},
+	{'l',SUBTYPE_UNKNOWN,1,48}, /* 39 */
 		{'p',SUBTYPE_UNKNOWN,1,-1},
 			{'i',SUBTYPE_UNKNOWN,1,-1},
 				{'d',SUBTYPE_UNKNOWN,1,-1},
 					{'f',SUBTYPE_UNKNOWN,1,-1},
-						{'i',SUBTYPE_UNKNOWN,1,-1},
-							{'+',TYPE_UNKNOWN,1,-1},
-								{'x',TYPE_UNKNOWN,1,-1},
-									{'m',TYPE_UNKNOWN,1,-1},
-										{'l',SUBTYPE_LPIDFXML,0,-1},
-	{'w',SUBTYPE_UNKNOWN,1,64},
+						{'+',SUBTYPE_UNKNOWN,1,-1},
+							{'x',SUBTYPE_UNKNOWN,1,-1},
+								{'m',SUBTYPE_UNKNOWN,1,-1},
+									{'l',SUBTYPE_LPIDFXML,0,-1},
+	{'w',SUBTYPE_UNKNOWN,1,63}, /* 48 */
 		{'a',SUBTYPE_UNKNOWN,1,-1},
 			{'t',SUBTYPE_UNKNOWN,1,-1},
 				{'c',SUBTYPE_UNKNOWN,1,-1},
@@ -161,29 +159,41 @@ static type_node_t subtype_tree[] = {
 													{'x',TYPE_UNKNOWN,1,-1},
 														{'m',TYPE_UNKNOWN,1,-1},
 															{'l',SUBTYPE_WATCHERINFOXML,0,-1},
-	{'x',SUBTYPE_UNKNOWN,1,74},
-		{'p',SUBTYPE_UNKNOWN,1,-1},
+	{'x',SUBTYPE_UNKNOWN,2,85}, /* 63 */
+		{'p',SUBTYPE_UNKNOWN,1,72}, /* 64 */
 			{'i',SUBTYPE_UNKNOWN,1,-1},
 				{'d',SUBTYPE_UNKNOWN,1,-1},
 					{'f',SUBTYPE_UNKNOWN,1,-1},
-						{'i',SUBTYPE_UNKNOWN,1,-1},
-							{'+',TYPE_UNKNOWN,1,-1},
-								{'x',TYPE_UNKNOWN,1,-1},
-									{'m',TYPE_UNKNOWN,1,-1},
-										{'l',SUBTYPE_XPIDFXML,0,-1},
-	{'e',SUBTYPE_UNKNOWN,1,-1},
+						{'+',SUBTYPE_UNKNOWN,1,-1},
+							{'x',SUBTYPE_UNKNOWN,1,-1},
+								{'m',SUBTYPE_UNKNOWN,1,-1},
+									{'l',SUBTYPE_XPIDFXML,0,-1},
+		{'m',SUBTYPE_UNKNOWN,1,-1}, /* 72 */
+			{'l',SUBTYPE_UNKNOWN,1,-1},
+				{'+',SUBTYPE_UNKNOWN,1,-1},
+					{'m',SUBTYPE_UNKNOWN,1,-1},
+						{'s',SUBTYPE_UNKNOWN,1,-1},
+							{'r',SUBTYPE_UNKNOWN,1,-1},
+								{'t',SUBTYPE_UNKNOWN,1,-1},
+									{'c',SUBTYPE_UNKNOWN,1,-1},
+										{'.',SUBTYPE_UNKNOWN,1,-1},
+											{'p',SUBTYPE_UNKNOWN,1,-1},
+												{'i',SUBTYPE_UNKNOWN,1,-1}, 
+													{'d',SUBTYPE_UNKNOWN,1,-1},
+														{'f',SUBTYPE_XML_MSRTC_PIDF,0,-1},
+	{'e',SUBTYPE_UNKNOWN,1,-1}, /* 85 */
 		{'x',SUBTYPE_UNKNOWN,1,-1},
 			{'t',SUBTYPE_UNKNOWN,1,-1},
 				{'e',SUBTYPE_UNKNOWN,1,-1},
 					{'r',SUBTYPE_UNKNOWN,1,-1},
 						{'n',SUBTYPE_UNKNOWN,1,-1},
-							{'a',TYPE_UNKNOWN,1,-1},
-								{'l',TYPE_UNKNOWN,1,-1},
-									{'-',TYPE_UNKNOWN,1,-1},
-										{'b',SUBTYPE_LPIDFXML,0,-1},
-											{'o',TYPE_UNKNOWN,1,-1},
-												{'d',TYPE_UNKNOWN,1,-1},
-													{'y',SUBTYPE_EXTERNAL_BODY,1,-1},
+							{'a',SUBTYPE_UNKNOWN,1,-1},
+								{'l',SUBTYPE_UNKNOWN,1,-1},
+									{'-',SUBTYPE_UNKNOWN,1,-1},
+										{'b',SUBTYPE_UNKNOWN,1,-1},
+											{'o',SUBTYPE_UNKNOWN,1,-1},
+												{'d',SUBTYPE_UNKNOWN,1,-1},
+													{'y',SUBTYPE_EXTERNAL_BODY,0,-1},
 
 	};
 
@@ -322,14 +332,14 @@ char* decode_mime_type(char *start, char *end, unsigned int *mime_type)
 
 	/* check the format of the decoded mime */
 	if ((*mime_type)>>16==TYPE_ALL && ((*mime_type)&0x00ff)!=SUBTYPE_ALL) {
-		LOG(L_ERR,"ERROR:decode_mine_type: invalid mime format found "
+		LOG(L_ERR,"ERROR:decode_mime_type: invalid mime format found "
 			" <*/submime> in [%.*s]!!\n", (int)(end-start),start);
 		return 0;
 	}
 
 	return p;
 error:
-	LOG(L_ERR,"ERROR:decode_mine_type: parse error near in [%.*s] char"
+	LOG(L_ERR,"ERROR:decode_mime_type: parse error near in [%.*s] char"
 		"[%d][%c] offset=%d\n", (int)(end-start),start,*p,*p,(int)(p-start));
 	return 0;
 }

+ 1 - 0
parser/parse_content.h

@@ -60,6 +60,7 @@ struct mime_type {
 #define SUBTYPE_XPIDFXML     9
 #define SUBTYPE_WATCHERINFOXML     10
 #define SUBTYPE_EXTERNAL_BODY      11
+#define SUBTYPE_XML_MSRTC_PIDF     12
 #define SUBTYPE_ALL          0xfe
 #define SUBTYPE_UNKNOWN      0xff