oversip 1.3.8 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +1 -1
- data/etc/oversip.conf +28 -0
- data/ext/sip_parser/{sip_parser.c → sip_message_parser.c} +119 -119
- data/ext/sip_parser/sip_parser.h +24 -2
- data/ext/sip_parser/sip_parser_ruby.c +84 -27
- data/ext/sip_parser/sip_uri_parser.c +39699 -0
- data/lib/oversip/config.rb +14 -0
- data/lib/oversip/errors.rb +3 -0
- data/lib/oversip/modules/outbound_mangling.rb +20 -24
- data/lib/oversip/sip/client.rb +135 -11
- data/lib/oversip/sip/launcher.rb +82 -38
- data/lib/oversip/sip/name_addr.rb +8 -0
- data/lib/oversip/sip/proxy.rb +22 -13
- data/lib/oversip/sip/request.rb +31 -1
- data/lib/oversip/sip/uac.rb +9 -13
- data/lib/oversip/sip/uac_request.rb +11 -10
- data/lib/oversip/sip/uri.rb +24 -0
- data/lib/oversip/version.rb +3 -3
- data/lib/oversip/websocket/launcher.rb +64 -30
- data/lib/oversip.rb +6 -0
- data/test/test_name_addr_parser.rb +24 -0
- data/test/{test_sip_parser.rb → test_sip_message_parser.rb} +15 -1
- data/test/test_sip_uri_parser.rb +56 -0
- data/test/test_uri.rb +11 -0
- data/thirdparty/stud/stud.tar.gz +0 -0
- metadata +10 -5
@@ -1,5 +1,5 @@
|
|
1
1
|
|
2
|
-
#line 1 "
|
2
|
+
#line 1 "sip_message_parser.rl"
|
3
3
|
#include "sip_parser.h"
|
4
4
|
#include "ext_help.h"
|
5
5
|
#include <stdio.h>
|
@@ -16,14 +16,14 @@
|
|
16
16
|
|
17
17
|
/** machine **/
|
18
18
|
|
19
|
-
#line 571 "
|
19
|
+
#line 571 "sip_message_parser.rl"
|
20
20
|
|
21
21
|
|
22
22
|
|
23
23
|
|
24
24
|
/** Data **/
|
25
25
|
|
26
|
-
#line 27 "
|
26
|
+
#line 27 "sip_message_parser.c"
|
27
27
|
static const char _sip_message_parser_actions[] = {
|
28
28
|
0, 1, 3, 1, 5, 1, 6, 1,
|
29
29
|
7, 1, 8, 1, 28, 1, 29, 1,
|
@@ -28749,19 +28749,19 @@ static const int sip_message_parser_error = 0;
|
|
28749
28749
|
static const int sip_message_parser_en_main = 1;
|
28750
28750
|
|
28751
28751
|
|
28752
|
-
#line 577 "
|
28752
|
+
#line 577 "sip_message_parser.rl"
|
28753
28753
|
|
28754
28754
|
int sip_message_parser_init(sip_message_parser *parser)
|
28755
28755
|
{
|
28756
28756
|
TRACE();
|
28757
28757
|
int cs = 0;
|
28758
28758
|
|
28759
|
-
#line 28760 "
|
28759
|
+
#line 28760 "sip_message_parser.c"
|
28760
28760
|
{
|
28761
28761
|
cs = sip_message_parser_start;
|
28762
28762
|
}
|
28763
28763
|
|
28764
|
-
#line 583 "
|
28764
|
+
#line 583 "sip_message_parser.rl"
|
28765
28765
|
parser->cs = cs;
|
28766
28766
|
parser->nread = 0;
|
28767
28767
|
parser->error_start = NULL;
|
@@ -28819,7 +28819,7 @@ size_t sip_message_parser_execute(sip_message_parser *parser, const char *buffer
|
|
28819
28819
|
assert(pe - p == len - off && "pointers aren't same distance");
|
28820
28820
|
|
28821
28821
|
|
28822
|
-
#line 28823 "
|
28822
|
+
#line 28823 "sip_message_parser.c"
|
28823
28823
|
{
|
28824
28824
|
int _klen;
|
28825
28825
|
unsigned int _trans;
|
@@ -28854,7 +28854,7 @@ _resume:
|
|
28854
28854
|
case 0: {
|
28855
28855
|
_widec = (short)(128 + ((*p) - -128));
|
28856
28856
|
if (
|
28857
|
-
#line 170 "
|
28857
|
+
#line 170 "sip_message_parser.rl"
|
28858
28858
|
|
28859
28859
|
parser->method
|
28860
28860
|
) _widec += 256;
|
@@ -28928,52 +28928,52 @@ _match:
|
|
28928
28928
|
switch ( *_acts++ )
|
28929
28929
|
{
|
28930
28930
|
case 0:
|
28931
|
-
#line 20 "
|
28931
|
+
#line 20 "sip_message_parser.rl"
|
28932
28932
|
{
|
28933
28933
|
parser->data_type(parser, sip_request);
|
28934
28934
|
}
|
28935
28935
|
break;
|
28936
28936
|
case 1:
|
28937
|
-
#line 24 "
|
28937
|
+
#line 24 "sip_message_parser.rl"
|
28938
28938
|
{
|
28939
28939
|
parser->data_type(parser, sip_response);
|
28940
28940
|
}
|
28941
28941
|
break;
|
28942
28942
|
case 2:
|
28943
|
-
#line 28 "
|
28943
|
+
#line 28 "sip_message_parser.rl"
|
28944
28944
|
{
|
28945
28945
|
parser->data_type(parser, outbound_keepalive);
|
28946
28946
|
}
|
28947
28947
|
break;
|
28948
28948
|
case 3:
|
28949
|
-
#line 33 "
|
28949
|
+
#line 33 "sip_message_parser.rl"
|
28950
28950
|
{ MARK(mark, p); }
|
28951
28951
|
break;
|
28952
28952
|
case 4:
|
28953
|
-
#line 35 "
|
28953
|
+
#line 35 "sip_message_parser.rl"
|
28954
28954
|
{
|
28955
28955
|
MARK(hdr_field_start, p);
|
28956
28956
|
}
|
28957
28957
|
break;
|
28958
28958
|
case 5:
|
28959
|
-
#line 39 "
|
28959
|
+
#line 39 "sip_message_parser.rl"
|
28960
28960
|
{
|
28961
28961
|
parser->hdr_field_len = LEN(hdr_field_start, p);
|
28962
28962
|
parser->hdr_field_name = header_field_any;
|
28963
28963
|
}
|
28964
28964
|
break;
|
28965
28965
|
case 6:
|
28966
|
-
#line 44 "
|
28966
|
+
#line 44 "sip_message_parser.rl"
|
28967
28967
|
{ MARK(hdr_value_start, p); }
|
28968
28968
|
break;
|
28969
28969
|
case 7:
|
28970
|
-
#line 46 "
|
28970
|
+
#line 46 "sip_message_parser.rl"
|
28971
28971
|
{
|
28972
28972
|
parser->hdr_value_len = LEN(hdr_value_start, p);
|
28973
28973
|
}
|
28974
28974
|
break;
|
28975
28975
|
case 8:
|
28976
|
-
#line 50 "
|
28976
|
+
#line 50 "sip_message_parser.rl"
|
28977
28977
|
{
|
28978
28978
|
if (parser->hdr_value_start) {
|
28979
28979
|
parser->header(parser->parsed, PTR_TO(hdr_field_start), parser->hdr_field_len, PTR_TO(hdr_value_start), parser->hdr_value_len, parser->hdr_field_name);
|
@@ -28981,7 +28981,7 @@ _match:
|
|
28981
28981
|
}
|
28982
28982
|
break;
|
28983
28983
|
case 9:
|
28984
|
-
#line 57 "
|
28984
|
+
#line 57 "sip_message_parser.rl"
|
28985
28985
|
{
|
28986
28986
|
if (!parser->method) {
|
28987
28987
|
parser->method = method_INVITE;
|
@@ -28989,7 +28989,7 @@ _match:
|
|
28989
28989
|
}
|
28990
28990
|
break;
|
28991
28991
|
case 10:
|
28992
|
-
#line 63 "
|
28992
|
+
#line 63 "sip_message_parser.rl"
|
28993
28993
|
{
|
28994
28994
|
if (!parser->method) {
|
28995
28995
|
parser->method = method_ACK;
|
@@ -28997,7 +28997,7 @@ _match:
|
|
28997
28997
|
}
|
28998
28998
|
break;
|
28999
28999
|
case 11:
|
29000
|
-
#line 69 "
|
29000
|
+
#line 69 "sip_message_parser.rl"
|
29001
29001
|
{
|
29002
29002
|
if (!parser->method) {
|
29003
29003
|
parser->method = method_CANCEL;
|
@@ -29005,7 +29005,7 @@ _match:
|
|
29005
29005
|
}
|
29006
29006
|
break;
|
29007
29007
|
case 12:
|
29008
|
-
#line 75 "
|
29008
|
+
#line 75 "sip_message_parser.rl"
|
29009
29009
|
{
|
29010
29010
|
if (!parser->method) {
|
29011
29011
|
parser->method = method_PRACK;
|
@@ -29013,7 +29013,7 @@ _match:
|
|
29013
29013
|
}
|
29014
29014
|
break;
|
29015
29015
|
case 13:
|
29016
|
-
#line 81 "
|
29016
|
+
#line 81 "sip_message_parser.rl"
|
29017
29017
|
{
|
29018
29018
|
if (!parser->method) {
|
29019
29019
|
parser->method = method_BYE;
|
@@ -29021,7 +29021,7 @@ _match:
|
|
29021
29021
|
}
|
29022
29022
|
break;
|
29023
29023
|
case 14:
|
29024
|
-
#line 87 "
|
29024
|
+
#line 87 "sip_message_parser.rl"
|
29025
29025
|
{
|
29026
29026
|
if (!parser->method) {
|
29027
29027
|
parser->method = method_REFER;
|
@@ -29029,7 +29029,7 @@ _match:
|
|
29029
29029
|
}
|
29030
29030
|
break;
|
29031
29031
|
case 15:
|
29032
|
-
#line 93 "
|
29032
|
+
#line 93 "sip_message_parser.rl"
|
29033
29033
|
{
|
29034
29034
|
if (!parser->method) {
|
29035
29035
|
parser->method = method_INFO;
|
@@ -29037,7 +29037,7 @@ _match:
|
|
29037
29037
|
}
|
29038
29038
|
break;
|
29039
29039
|
case 16:
|
29040
|
-
#line 99 "
|
29040
|
+
#line 99 "sip_message_parser.rl"
|
29041
29041
|
{
|
29042
29042
|
if (!parser->method) {
|
29043
29043
|
parser->method = method_UPDATE;
|
@@ -29045,7 +29045,7 @@ _match:
|
|
29045
29045
|
}
|
29046
29046
|
break;
|
29047
29047
|
case 17:
|
29048
|
-
#line 105 "
|
29048
|
+
#line 105 "sip_message_parser.rl"
|
29049
29049
|
{
|
29050
29050
|
if (!parser->method_set) {
|
29051
29051
|
parser->method = method_OPTIONS;
|
@@ -29054,7 +29054,7 @@ _match:
|
|
29054
29054
|
}
|
29055
29055
|
break;
|
29056
29056
|
case 18:
|
29057
|
-
#line 112 "
|
29057
|
+
#line 112 "sip_message_parser.rl"
|
29058
29058
|
{
|
29059
29059
|
if (!parser->method) {
|
29060
29060
|
parser->method = method_REGISTER;
|
@@ -29062,7 +29062,7 @@ _match:
|
|
29062
29062
|
}
|
29063
29063
|
break;
|
29064
29064
|
case 19:
|
29065
|
-
#line 118 "
|
29065
|
+
#line 118 "sip_message_parser.rl"
|
29066
29066
|
{
|
29067
29067
|
if (!parser->method) {
|
29068
29068
|
parser->method = method_MESSAGE;
|
@@ -29070,7 +29070,7 @@ _match:
|
|
29070
29070
|
}
|
29071
29071
|
break;
|
29072
29072
|
case 20:
|
29073
|
-
#line 124 "
|
29073
|
+
#line 124 "sip_message_parser.rl"
|
29074
29074
|
{
|
29075
29075
|
if (!parser->method) {
|
29076
29076
|
parser->method = method_SUBSCRIBE;
|
@@ -29078,7 +29078,7 @@ _match:
|
|
29078
29078
|
}
|
29079
29079
|
break;
|
29080
29080
|
case 21:
|
29081
|
-
#line 130 "
|
29081
|
+
#line 130 "sip_message_parser.rl"
|
29082
29082
|
{
|
29083
29083
|
if (!parser->method) {
|
29084
29084
|
parser->method = method_NOTIFY;
|
@@ -29086,7 +29086,7 @@ _match:
|
|
29086
29086
|
}
|
29087
29087
|
break;
|
29088
29088
|
case 22:
|
29089
|
-
#line 136 "
|
29089
|
+
#line 136 "sip_message_parser.rl"
|
29090
29090
|
{
|
29091
29091
|
if (!parser->method) {
|
29092
29092
|
parser->method = method_PUBLISH;
|
@@ -29094,7 +29094,7 @@ _match:
|
|
29094
29094
|
}
|
29095
29095
|
break;
|
29096
29096
|
case 23:
|
29097
|
-
#line 142 "
|
29097
|
+
#line 142 "sip_message_parser.rl"
|
29098
29098
|
{
|
29099
29099
|
if (!parser->method) {
|
29100
29100
|
parser->method = method_PULL;
|
@@ -29102,7 +29102,7 @@ _match:
|
|
29102
29102
|
}
|
29103
29103
|
break;
|
29104
29104
|
case 24:
|
29105
|
-
#line 148 "
|
29105
|
+
#line 148 "sip_message_parser.rl"
|
29106
29106
|
{
|
29107
29107
|
if (!parser->method) {
|
29108
29108
|
parser->method = method_PUSH;
|
@@ -29110,7 +29110,7 @@ _match:
|
|
29110
29110
|
}
|
29111
29111
|
break;
|
29112
29112
|
case 25:
|
29113
|
-
#line 154 "
|
29113
|
+
#line 154 "sip_message_parser.rl"
|
29114
29114
|
{
|
29115
29115
|
if (!parser->method) {
|
29116
29116
|
parser->method = method_STORE;
|
@@ -29118,7 +29118,7 @@ _match:
|
|
29118
29118
|
}
|
29119
29119
|
break;
|
29120
29120
|
case 26:
|
29121
|
-
#line 160 "
|
29121
|
+
#line 160 "sip_message_parser.rl"
|
29122
29122
|
{
|
29123
29123
|
if (!parser->method) {
|
29124
29124
|
parser->method = method_unknown;
|
@@ -29126,37 +29126,37 @@ _match:
|
|
29126
29126
|
}
|
29127
29127
|
break;
|
29128
29128
|
case 27:
|
29129
|
-
#line 166 "
|
29129
|
+
#line 166 "sip_message_parser.rl"
|
29130
29130
|
{
|
29131
29131
|
parser->message.method(parser->parsed, PTR_TO(mark), LEN(mark, p), parser->method);
|
29132
29132
|
}
|
29133
29133
|
break;
|
29134
29134
|
case 28:
|
29135
|
-
#line 175 "
|
29135
|
+
#line 175 "sip_message_parser.rl"
|
29136
29136
|
{
|
29137
29137
|
parser->message.sip_version(parser->parsed, PTR_TO(mark), LEN(mark, p));
|
29138
29138
|
}
|
29139
29139
|
break;
|
29140
29140
|
case 29:
|
29141
|
-
#line 179 "
|
29141
|
+
#line 179 "sip_message_parser.rl"
|
29142
29142
|
{
|
29143
29143
|
parser->message.status_code(parser->parsed, PTR_TO(mark), LEN(mark, p));
|
29144
29144
|
}
|
29145
29145
|
break;
|
29146
29146
|
case 30:
|
29147
|
-
#line 183 "
|
29147
|
+
#line 183 "sip_message_parser.rl"
|
29148
29148
|
{
|
29149
29149
|
parser->message.reason_phrase(parser->parsed, PTR_TO(mark), LEN(mark, p));
|
29150
29150
|
}
|
29151
29151
|
break;
|
29152
29152
|
case 31:
|
29153
|
-
#line 188 "
|
29153
|
+
#line 188 "sip_message_parser.rl"
|
29154
29154
|
{
|
29155
29155
|
MARK(header_param_key_start, p);
|
29156
29156
|
}
|
29157
29157
|
break;
|
29158
29158
|
case 32:
|
29159
|
-
#line 192 "
|
29159
|
+
#line 192 "sip_message_parser.rl"
|
29160
29160
|
{
|
29161
29161
|
parser->header_param_key_len = LEN(header_param_key_start, p);
|
29162
29162
|
/* If current param has no value don't take previous param's value. */
|
@@ -29164,213 +29164,213 @@ _match:
|
|
29164
29164
|
}
|
29165
29165
|
break;
|
29166
29166
|
case 33:
|
29167
|
-
#line 198 "
|
29167
|
+
#line 198 "sip_message_parser.rl"
|
29168
29168
|
{
|
29169
29169
|
MARK(header_param_value_start, p);
|
29170
29170
|
}
|
29171
29171
|
break;
|
29172
29172
|
case 34:
|
29173
|
-
#line 202 "
|
29173
|
+
#line 202 "sip_message_parser.rl"
|
29174
29174
|
{
|
29175
29175
|
parser->header_param_value_len = LEN(header_param_value_start, p);
|
29176
29176
|
}
|
29177
29177
|
break;
|
29178
29178
|
case 35:
|
29179
|
-
#line 207 "
|
29179
|
+
#line 207 "sip_message_parser.rl"
|
29180
29180
|
{
|
29181
29181
|
parser->hdr_field_name = header_field_via;
|
29182
29182
|
}
|
29183
29183
|
break;
|
29184
29184
|
case 36:
|
29185
|
-
#line 211 "
|
29185
|
+
#line 211 "sip_message_parser.rl"
|
29186
29186
|
{ parser->num_via++; }
|
29187
29187
|
break;
|
29188
29188
|
case 37:
|
29189
|
-
#line 213 "
|
29189
|
+
#line 213 "sip_message_parser.rl"
|
29190
29190
|
{
|
29191
29191
|
if (parser->num_via == 1)
|
29192
29192
|
parser->message.via_sent_by_host(parser->parsed, PTR_TO(mark), LEN(mark, p));
|
29193
29193
|
}
|
29194
29194
|
break;
|
29195
29195
|
case 38:
|
29196
|
-
#line 218 "
|
29196
|
+
#line 218 "sip_message_parser.rl"
|
29197
29197
|
{
|
29198
29198
|
if (parser->num_via == 1)
|
29199
29199
|
parser->message.via_sent_by_port(parser->parsed, PTR_TO(mark), LEN(mark, p));
|
29200
29200
|
}
|
29201
29201
|
break;
|
29202
29202
|
case 39:
|
29203
|
-
#line 223 "
|
29203
|
+
#line 223 "sip_message_parser.rl"
|
29204
29204
|
{
|
29205
29205
|
if (parser->num_via == 1)
|
29206
29206
|
parser->message.via_branch(parser->parsed, PTR_TO(mark), LEN(mark, p));
|
29207
29207
|
}
|
29208
29208
|
break;
|
29209
29209
|
case 40:
|
29210
|
-
#line 228 "
|
29210
|
+
#line 228 "sip_message_parser.rl"
|
29211
29211
|
{
|
29212
29212
|
if (parser->num_via == 1)
|
29213
29213
|
parser->message.via_branch_rfc3261(parser->parsed, PTR_TO(mark), LEN(mark, p));
|
29214
29214
|
}
|
29215
29215
|
break;
|
29216
29216
|
case 41:
|
29217
|
-
#line 233 "
|
29217
|
+
#line 233 "sip_message_parser.rl"
|
29218
29218
|
{
|
29219
29219
|
if (parser->num_via == 1)
|
29220
29220
|
parser->message.via_received(parser->parsed, PTR_TO(mark), LEN(mark, p));
|
29221
29221
|
}
|
29222
29222
|
break;
|
29223
29223
|
case 42:
|
29224
|
-
#line 238 "
|
29224
|
+
#line 238 "sip_message_parser.rl"
|
29225
29225
|
{
|
29226
29226
|
if (parser->num_via == 1)
|
29227
29227
|
parser->message.via_has_rport(parser->parsed);
|
29228
29228
|
}
|
29229
29229
|
break;
|
29230
29230
|
case 43:
|
29231
|
-
#line 243 "
|
29231
|
+
#line 243 "sip_message_parser.rl"
|
29232
29232
|
{
|
29233
29233
|
if (parser->num_via == 1)
|
29234
29234
|
parser->message.via_has_alias(parser->parsed);
|
29235
29235
|
}
|
29236
29236
|
break;
|
29237
29237
|
case 44:
|
29238
|
-
#line 248 "
|
29238
|
+
#line 248 "sip_message_parser.rl"
|
29239
29239
|
{
|
29240
29240
|
if (parser->num_via == 1)
|
29241
29241
|
parser->message.header_core_value(parser->parsed, header_field_via, PTR_TO(hdr_value_start), LEN(hdr_value_start, p));
|
29242
29242
|
}
|
29243
29243
|
break;
|
29244
29244
|
case 45:
|
29245
|
-
#line 253 "
|
29245
|
+
#line 253 "sip_message_parser.rl"
|
29246
29246
|
{
|
29247
29247
|
if (parser->num_via == 1)
|
29248
29248
|
parser->message.header_param(parser->parsed, header_field_via, PTR_TO(header_param_key_start), parser->header_param_key_len, PTR_TO(header_param_value_start), parser->header_param_value_len);
|
29249
29249
|
}
|
29250
29250
|
break;
|
29251
29251
|
case 46:
|
29252
|
-
#line 258 "
|
29252
|
+
#line 258 "sip_message_parser.rl"
|
29253
29253
|
{ parser->num_call_id++; }
|
29254
29254
|
break;
|
29255
29255
|
case 47:
|
29256
|
-
#line 260 "
|
29256
|
+
#line 260 "sip_message_parser.rl"
|
29257
29257
|
{
|
29258
29258
|
if (parser->num_call_id == 1)
|
29259
29259
|
parser->message.call_id(parser->parsed, PTR_TO(mark), LEN(mark, p));
|
29260
29260
|
}
|
29261
29261
|
break;
|
29262
29262
|
case 48:
|
29263
|
-
#line 265 "
|
29263
|
+
#line 265 "sip_message_parser.rl"
|
29264
29264
|
{ parser->num_cseq++; }
|
29265
29265
|
break;
|
29266
29266
|
case 49:
|
29267
|
-
#line 267 "
|
29267
|
+
#line 267 "sip_message_parser.rl"
|
29268
29268
|
{
|
29269
29269
|
if (parser->num_cseq == 1)
|
29270
29270
|
parser->message.cseq_number(parser->parsed, PTR_TO(mark), LEN(mark, p));
|
29271
29271
|
}
|
29272
29272
|
break;
|
29273
29273
|
case 50:
|
29274
|
-
#line 272 "
|
29274
|
+
#line 272 "sip_message_parser.rl"
|
29275
29275
|
{ parser->num_max_forwards++; }
|
29276
29276
|
break;
|
29277
29277
|
case 51:
|
29278
|
-
#line 274 "
|
29278
|
+
#line 274 "sip_message_parser.rl"
|
29279
29279
|
{
|
29280
29280
|
if (parser->num_max_forwards == 1)
|
29281
29281
|
parser->message.max_forwards(parser->parsed, PTR_TO(mark), LEN(mark, p));
|
29282
29282
|
}
|
29283
29283
|
break;
|
29284
29284
|
case 52:
|
29285
|
-
#line 279 "
|
29285
|
+
#line 279 "sip_message_parser.rl"
|
29286
29286
|
{ parser->num_content_length++; }
|
29287
29287
|
break;
|
29288
29288
|
case 53:
|
29289
|
-
#line 281 "
|
29289
|
+
#line 281 "sip_message_parser.rl"
|
29290
29290
|
{
|
29291
29291
|
if (parser->num_content_length == 1)
|
29292
29292
|
parser->message.content_length(parser->parsed, PTR_TO(mark), LEN(mark, p));
|
29293
29293
|
}
|
29294
29294
|
break;
|
29295
29295
|
case 54:
|
29296
|
-
#line 287 "
|
29296
|
+
#line 287 "sip_message_parser.rl"
|
29297
29297
|
{
|
29298
29298
|
if (parser->do_uri)
|
29299
29299
|
parser->uri_scheme = uri_scheme_sip;
|
29300
29300
|
}
|
29301
29301
|
break;
|
29302
29302
|
case 55:
|
29303
|
-
#line 292 "
|
29303
|
+
#line 292 "sip_message_parser.rl"
|
29304
29304
|
{
|
29305
29305
|
if (parser->do_uri)
|
29306
29306
|
parser->uri_scheme = uri_scheme_sips;
|
29307
29307
|
}
|
29308
29308
|
break;
|
29309
29309
|
case 56:
|
29310
|
-
#line 297 "
|
29310
|
+
#line 297 "sip_message_parser.rl"
|
29311
29311
|
{
|
29312
29312
|
if (parser->do_uri)
|
29313
29313
|
parser->uri_scheme = uri_scheme_tel;
|
29314
29314
|
}
|
29315
29315
|
break;
|
29316
29316
|
case 57:
|
29317
|
-
#line 302 "
|
29317
|
+
#line 302 "sip_message_parser.rl"
|
29318
29318
|
{
|
29319
29319
|
if (parser->do_uri)
|
29320
29320
|
parser->uri_scheme = uri_scheme_unknown;
|
29321
29321
|
}
|
29322
29322
|
break;
|
29323
29323
|
case 58:
|
29324
|
-
#line 307 "
|
29324
|
+
#line 307 "sip_message_parser.rl"
|
29325
29325
|
{
|
29326
29326
|
if (parser->do_uri)
|
29327
29327
|
parser->uri.scheme(parser->parsed, parser->uri_owner, PTR_TO(mark), LEN(mark, p), parser->uri_scheme);
|
29328
29328
|
}
|
29329
29329
|
break;
|
29330
29330
|
case 59:
|
29331
|
-
#line 312 "
|
29331
|
+
#line 312 "sip_message_parser.rl"
|
29332
29332
|
{
|
29333
29333
|
if (parser->do_uri)
|
29334
29334
|
parser->uri.user(parser->parsed, parser->uri_owner, PTR_TO(mark), LEN(mark, p), parser->uri_scheme);
|
29335
29335
|
}
|
29336
29336
|
break;
|
29337
29337
|
case 60:
|
29338
|
-
#line 317 "
|
29338
|
+
#line 317 "sip_message_parser.rl"
|
29339
29339
|
{
|
29340
29340
|
if (parser->do_uri)
|
29341
29341
|
parser->uri.host(parser->parsed, parser->uri_owner, PTR_TO(mark), LEN(mark, p), host_type_domain);
|
29342
29342
|
}
|
29343
29343
|
break;
|
29344
29344
|
case 61:
|
29345
|
-
#line 322 "
|
29345
|
+
#line 322 "sip_message_parser.rl"
|
29346
29346
|
{
|
29347
29347
|
if (parser->do_uri)
|
29348
29348
|
parser->uri.host(parser->parsed, parser->uri_owner, PTR_TO(mark), LEN(mark, p), host_type_ipv4);
|
29349
29349
|
}
|
29350
29350
|
break;
|
29351
29351
|
case 62:
|
29352
|
-
#line 327 "
|
29352
|
+
#line 327 "sip_message_parser.rl"
|
29353
29353
|
{
|
29354
29354
|
if (parser->do_uri)
|
29355
29355
|
parser->uri.host(parser->parsed, parser->uri_owner, PTR_TO(mark), LEN(mark, p), host_type_ipv6);
|
29356
29356
|
}
|
29357
29357
|
break;
|
29358
29358
|
case 63:
|
29359
|
-
#line 332 "
|
29359
|
+
#line 332 "sip_message_parser.rl"
|
29360
29360
|
{
|
29361
29361
|
if (parser->do_uri)
|
29362
29362
|
parser->uri.port(parser->parsed, parser->uri_owner, PTR_TO(mark), LEN(mark, p), parser->uri_scheme);
|
29363
29363
|
}
|
29364
29364
|
break;
|
29365
29365
|
case 64:
|
29366
|
-
#line 338 "
|
29366
|
+
#line 338 "sip_message_parser.rl"
|
29367
29367
|
{
|
29368
29368
|
if (parser->do_uri)
|
29369
29369
|
MARK(uri_param_key_start, p);
|
29370
29370
|
}
|
29371
29371
|
break;
|
29372
29372
|
case 65:
|
29373
|
-
#line 343 "
|
29373
|
+
#line 343 "sip_message_parser.rl"
|
29374
29374
|
{
|
29375
29375
|
if (parser->do_uri) {
|
29376
29376
|
parser->uri_param_key_len = LEN(uri_param_key_start, p);
|
@@ -29380,112 +29380,112 @@ _match:
|
|
29380
29380
|
}
|
29381
29381
|
break;
|
29382
29382
|
case 66:
|
29383
|
-
#line 351 "
|
29383
|
+
#line 351 "sip_message_parser.rl"
|
29384
29384
|
{
|
29385
29385
|
if (parser->do_uri)
|
29386
29386
|
MARK(uri_param_value_start, p);
|
29387
29387
|
}
|
29388
29388
|
break;
|
29389
29389
|
case 67:
|
29390
|
-
#line 356 "
|
29390
|
+
#line 356 "sip_message_parser.rl"
|
29391
29391
|
{
|
29392
29392
|
if (parser->do_uri)
|
29393
29393
|
parser->uri_param_value_len = LEN(uri_param_value_start, p);
|
29394
29394
|
}
|
29395
29395
|
break;
|
29396
29396
|
case 68:
|
29397
|
-
#line 361 "
|
29397
|
+
#line 361 "sip_message_parser.rl"
|
29398
29398
|
{
|
29399
29399
|
if (parser->do_uri == 1)
|
29400
29400
|
parser->uri.param(parser->parsed, parser->uri_owner, PTR_TO(uri_param_key_start), parser->uri_param_key_len, PTR_TO(uri_param_value_start), parser->uri_param_value_len);
|
29401
29401
|
}
|
29402
29402
|
break;
|
29403
29403
|
case 69:
|
29404
|
-
#line 367 "
|
29404
|
+
#line 367 "sip_message_parser.rl"
|
29405
29405
|
{
|
29406
29406
|
if (parser->do_uri)
|
29407
29407
|
parser->uri.headers(parser->parsed, parser->uri_owner, PTR_TO(mark), LEN(mark, p), parser->uri_scheme);
|
29408
29408
|
}
|
29409
29409
|
break;
|
29410
29410
|
case 70:
|
29411
|
-
#line 372 "
|
29411
|
+
#line 372 "sip_message_parser.rl"
|
29412
29412
|
{
|
29413
29413
|
if (parser->do_uri)
|
29414
29414
|
parser->uri.known_param(parser->parsed, parser->uri_owner, uri_tel_phone_context, PTR_TO(mark), LEN(mark, p), 0);
|
29415
29415
|
}
|
29416
29416
|
break;
|
29417
29417
|
case 71:
|
29418
|
-
#line 377 "
|
29418
|
+
#line 377 "sip_message_parser.rl"
|
29419
29419
|
{
|
29420
29420
|
if (parser->do_uri)
|
29421
29421
|
parser->uri.known_param(parser->parsed, parser->uri_owner, uri_param_transport, PTR_TO(mark), LEN(mark, p), transport_udp);
|
29422
29422
|
}
|
29423
29423
|
break;
|
29424
29424
|
case 72:
|
29425
|
-
#line 382 "
|
29425
|
+
#line 382 "sip_message_parser.rl"
|
29426
29426
|
{
|
29427
29427
|
if (parser->do_uri)
|
29428
29428
|
parser->uri.known_param(parser->parsed, parser->uri_owner, uri_param_transport, PTR_TO(mark), LEN(mark, p), transport_tcp);
|
29429
29429
|
}
|
29430
29430
|
break;
|
29431
29431
|
case 73:
|
29432
|
-
#line 387 "
|
29432
|
+
#line 387 "sip_message_parser.rl"
|
29433
29433
|
{
|
29434
29434
|
if (parser->do_uri)
|
29435
29435
|
parser->uri.known_param(parser->parsed, parser->uri_owner, uri_param_transport, PTR_TO(mark), LEN(mark, p), transport_tls);
|
29436
29436
|
}
|
29437
29437
|
break;
|
29438
29438
|
case 74:
|
29439
|
-
#line 392 "
|
29439
|
+
#line 392 "sip_message_parser.rl"
|
29440
29440
|
{
|
29441
29441
|
if (parser->do_uri)
|
29442
29442
|
parser->uri.known_param(parser->parsed, parser->uri_owner, uri_param_transport, PTR_TO(mark), LEN(mark, p), transport_sctp);
|
29443
29443
|
}
|
29444
29444
|
break;
|
29445
29445
|
case 75:
|
29446
|
-
#line 397 "
|
29446
|
+
#line 397 "sip_message_parser.rl"
|
29447
29447
|
{
|
29448
29448
|
if (parser->do_uri)
|
29449
29449
|
parser->uri.known_param(parser->parsed, parser->uri_owner, uri_param_transport, PTR_TO(mark), LEN(mark, p), transport_ws);
|
29450
29450
|
}
|
29451
29451
|
break;
|
29452
29452
|
case 76:
|
29453
|
-
#line 402 "
|
29453
|
+
#line 402 "sip_message_parser.rl"
|
29454
29454
|
{
|
29455
29455
|
if (parser->do_uri)
|
29456
29456
|
parser->uri.known_param(parser->parsed, parser->uri_owner, uri_param_transport, PTR_TO(mark), LEN(mark, p), transport_wss);
|
29457
29457
|
}
|
29458
29458
|
break;
|
29459
29459
|
case 77:
|
29460
|
-
#line 407 "
|
29460
|
+
#line 407 "sip_message_parser.rl"
|
29461
29461
|
{
|
29462
29462
|
if (parser->do_uri)
|
29463
29463
|
parser->uri.known_param(parser->parsed, parser->uri_owner, uri_param_transport, PTR_TO(mark), LEN(mark, p), transport_unknown);
|
29464
29464
|
}
|
29465
29465
|
break;
|
29466
29466
|
case 78:
|
29467
|
-
#line 412 "
|
29467
|
+
#line 412 "sip_message_parser.rl"
|
29468
29468
|
{
|
29469
29469
|
if (parser->do_uri)
|
29470
29470
|
parser->uri.has_param(parser->parsed, parser->uri_owner, uri_param_lr);
|
29471
29471
|
}
|
29472
29472
|
break;
|
29473
29473
|
case 79:
|
29474
|
-
#line 417 "
|
29474
|
+
#line 417 "sip_message_parser.rl"
|
29475
29475
|
{
|
29476
29476
|
if (parser->do_uri)
|
29477
29477
|
parser->uri.has_param(parser->parsed, parser->uri_owner, uri_param_ob);
|
29478
29478
|
}
|
29479
29479
|
break;
|
29480
29480
|
case 80:
|
29481
|
-
#line 422 "
|
29481
|
+
#line 422 "sip_message_parser.rl"
|
29482
29482
|
{
|
29483
29483
|
if (parser->do_uri)
|
29484
29484
|
parser->uri.known_param(parser->parsed, parser->uri_owner, uri_param_ovid, PTR_TO(mark), LEN(mark, p), 0);
|
29485
29485
|
}
|
29486
29486
|
break;
|
29487
29487
|
case 81:
|
29488
|
-
#line 427 "
|
29488
|
+
#line 427 "sip_message_parser.rl"
|
29489
29489
|
{
|
29490
29490
|
if (parser->do_uri)
|
29491
29491
|
if (!parser->uri_display_name_quoted)
|
@@ -29495,20 +29495,20 @@ _match:
|
|
29495
29495
|
}
|
29496
29496
|
break;
|
29497
29497
|
case 82:
|
29498
|
-
#line 436 "
|
29498
|
+
#line 436 "sip_message_parser.rl"
|
29499
29499
|
{
|
29500
29500
|
parser->uri_display_name_quoted=1;
|
29501
29501
|
}
|
29502
29502
|
break;
|
29503
29503
|
case 83:
|
29504
|
-
#line 440 "
|
29504
|
+
#line 440 "sip_message_parser.rl"
|
29505
29505
|
{
|
29506
29506
|
if (parser->do_uri)
|
29507
29507
|
MARK(uri_start, p);
|
29508
29508
|
}
|
29509
29509
|
break;
|
29510
29510
|
case 84:
|
29511
|
-
#line 445 "
|
29511
|
+
#line 445 "sip_message_parser.rl"
|
29512
29512
|
{
|
29513
29513
|
if (parser->do_uri)
|
29514
29514
|
parser->uri.full(parser->parsed, parser->uri_owner, PTR_TO(uri_start), LEN(uri_start, p), parser->uri_scheme);
|
@@ -29520,29 +29520,29 @@ _match:
|
|
29520
29520
|
}
|
29521
29521
|
break;
|
29522
29522
|
case 85:
|
29523
|
-
#line 455 "
|
29523
|
+
#line 455 "sip_message_parser.rl"
|
29524
29524
|
{ parser->message.init_component(parser->parsed, component_ruri); }
|
29525
29525
|
break;
|
29526
29526
|
case 86:
|
29527
|
-
#line 457 "
|
29527
|
+
#line 457 "sip_message_parser.rl"
|
29528
29528
|
{
|
29529
29529
|
parser->do_uri = 1;
|
29530
29530
|
parser->uri_owner = uri_owner_ruri;
|
29531
29531
|
}
|
29532
29532
|
break;
|
29533
29533
|
case 87:
|
29534
|
-
#line 462 "
|
29534
|
+
#line 462 "sip_message_parser.rl"
|
29535
29535
|
{
|
29536
29536
|
parser->message.init_component(parser->parsed, component_from);
|
29537
29537
|
parser->hdr_field_name = header_field_from;
|
29538
29538
|
}
|
29539
29539
|
break;
|
29540
29540
|
case 88:
|
29541
|
-
#line 467 "
|
29541
|
+
#line 467 "sip_message_parser.rl"
|
29542
29542
|
{ parser->num_from++; }
|
29543
29543
|
break;
|
29544
29544
|
case 89:
|
29545
|
-
#line 469 "
|
29545
|
+
#line 469 "sip_message_parser.rl"
|
29546
29546
|
{
|
29547
29547
|
if (parser->num_from == 1) {
|
29548
29548
|
parser->do_uri = 1;
|
@@ -29551,18 +29551,18 @@ _match:
|
|
29551
29551
|
}
|
29552
29552
|
break;
|
29553
29553
|
case 90:
|
29554
|
-
#line 476 "
|
29554
|
+
#line 476 "sip_message_parser.rl"
|
29555
29555
|
{
|
29556
29556
|
parser->message.init_component(parser->parsed, component_to);
|
29557
29557
|
parser->hdr_field_name = header_field_to;
|
29558
29558
|
}
|
29559
29559
|
break;
|
29560
29560
|
case 91:
|
29561
|
-
#line 481 "
|
29561
|
+
#line 481 "sip_message_parser.rl"
|
29562
29562
|
{ parser->num_to++; }
|
29563
29563
|
break;
|
29564
29564
|
case 92:
|
29565
|
-
#line 483 "
|
29565
|
+
#line 483 "sip_message_parser.rl"
|
29566
29566
|
{
|
29567
29567
|
if (parser->num_to == 1) {
|
29568
29568
|
parser->do_uri = 1;
|
@@ -29571,19 +29571,19 @@ _match:
|
|
29571
29571
|
}
|
29572
29572
|
break;
|
29573
29573
|
case 93:
|
29574
|
-
#line 491 "
|
29574
|
+
#line 491 "sip_message_parser.rl"
|
29575
29575
|
{
|
29576
29576
|
parser->message.from_tag(parser->parsed, PTR_TO(mark), LEN(mark, p));
|
29577
29577
|
}
|
29578
29578
|
break;
|
29579
29579
|
case 94:
|
29580
|
-
#line 495 "
|
29580
|
+
#line 495 "sip_message_parser.rl"
|
29581
29581
|
{
|
29582
29582
|
parser->message.to_tag(parser->parsed, PTR_TO(mark), LEN(mark, p));
|
29583
29583
|
}
|
29584
29584
|
break;
|
29585
29585
|
case 95:
|
29586
|
-
#line 500 "
|
29586
|
+
#line 500 "sip_message_parser.rl"
|
29587
29587
|
{
|
29588
29588
|
if (parser->route_found == 0) {
|
29589
29589
|
parser->message.init_component(parser->parsed, component_route);
|
@@ -29593,30 +29593,30 @@ _match:
|
|
29593
29593
|
}
|
29594
29594
|
break;
|
29595
29595
|
case 96:
|
29596
|
-
#line 508 "
|
29596
|
+
#line 508 "sip_message_parser.rl"
|
29597
29597
|
{
|
29598
29598
|
parser->message.init_component(parser->parsed, component_route_uri); }
|
29599
29599
|
break;
|
29600
29600
|
case 97:
|
29601
|
-
#line 511 "
|
29601
|
+
#line 511 "sip_message_parser.rl"
|
29602
29602
|
{
|
29603
29603
|
parser->do_uri = 1;
|
29604
29604
|
parser->uri_owner = uri_owner_route;
|
29605
29605
|
}
|
29606
29606
|
break;
|
29607
29607
|
case 98:
|
29608
|
-
#line 517 "
|
29608
|
+
#line 517 "sip_message_parser.rl"
|
29609
29609
|
{
|
29610
29610
|
parser->message.init_component(parser->parsed, component_contact);
|
29611
29611
|
parser->hdr_field_name = header_field_contact;
|
29612
29612
|
}
|
29613
29613
|
break;
|
29614
29614
|
case 99:
|
29615
|
-
#line 522 "
|
29615
|
+
#line 522 "sip_message_parser.rl"
|
29616
29616
|
{ parser->num_contact++; }
|
29617
29617
|
break;
|
29618
29618
|
case 100:
|
29619
|
-
#line 524 "
|
29619
|
+
#line 524 "sip_message_parser.rl"
|
29620
29620
|
{
|
29621
29621
|
if (parser->num_contact == 1) {
|
29622
29622
|
parser->do_uri = 1;
|
@@ -29625,54 +29625,54 @@ _match:
|
|
29625
29625
|
}
|
29626
29626
|
break;
|
29627
29627
|
case 101:
|
29628
|
-
#line 536 "
|
29628
|
+
#line 536 "sip_message_parser.rl"
|
29629
29629
|
{
|
29630
29630
|
if (parser->num_contact == 1)
|
29631
29631
|
parser->message.contact_params(parser->parsed, PTR_TO(mark), LEN(mark, p));
|
29632
29632
|
}
|
29633
29633
|
break;
|
29634
29634
|
case 102:
|
29635
|
-
#line 541 "
|
29635
|
+
#line 541 "sip_message_parser.rl"
|
29636
29636
|
{
|
29637
29637
|
if (parser->num_contact == 1)
|
29638
29638
|
parser->message.contact_has_reg_id(parser->parsed);
|
29639
29639
|
}
|
29640
29640
|
break;
|
29641
29641
|
case 103:
|
29642
|
-
#line 546 "
|
29642
|
+
#line 546 "sip_message_parser.rl"
|
29643
29643
|
{
|
29644
29644
|
parser->contact_is_valid = 1;
|
29645
29645
|
}
|
29646
29646
|
break;
|
29647
29647
|
case 104:
|
29648
|
-
#line 550 "
|
29648
|
+
#line 550 "sip_message_parser.rl"
|
29649
29649
|
{
|
29650
29650
|
parser->contact_is_valid = 0;
|
29651
29651
|
}
|
29652
29652
|
break;
|
29653
29653
|
case 105:
|
29654
|
-
#line 555 "
|
29654
|
+
#line 555 "sip_message_parser.rl"
|
29655
29655
|
{
|
29656
29656
|
parser->message.option_tag(parser->parsed, header_field_require, PTR_TO(mark), LEN(mark, p));
|
29657
29657
|
}
|
29658
29658
|
break;
|
29659
29659
|
case 106:
|
29660
|
-
#line 559 "
|
29660
|
+
#line 559 "sip_message_parser.rl"
|
29661
29661
|
{
|
29662
29662
|
parser->message.option_tag(parser->parsed, header_field_proxy_require, PTR_TO(mark), LEN(mark, p));
|
29663
29663
|
}
|
29664
29664
|
break;
|
29665
29665
|
case 107:
|
29666
|
-
#line 563 "
|
29666
|
+
#line 563 "sip_message_parser.rl"
|
29667
29667
|
{
|
29668
29668
|
parser->message.option_tag(parser->parsed, header_field_supported, PTR_TO(mark), LEN(mark, p));
|
29669
29669
|
}
|
29670
29670
|
break;
|
29671
29671
|
case 108:
|
29672
|
-
#line 568 "
|
29672
|
+
#line 568 "sip_message_parser.rl"
|
29673
29673
|
{ {p++; goto _out; } }
|
29674
29674
|
break;
|
29675
|
-
#line 29676 "
|
29675
|
+
#line 29676 "sip_message_parser.c"
|
29676
29676
|
}
|
29677
29677
|
}
|
29678
29678
|
|
@@ -29685,7 +29685,7 @@ _again:
|
|
29685
29685
|
_out: {}
|
29686
29686
|
}
|
29687
29687
|
|
29688
|
-
#line 640 "
|
29688
|
+
#line 640 "sip_message_parser.rl"
|
29689
29689
|
|
29690
29690
|
parser->cs = cs;
|
29691
29691
|
parser->nread += p - (buffer + off);
|