oversip 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (121) hide show
  1. data/AUTHORS.txt +11 -0
  2. data/LICENSE.txt +22 -0
  3. data/README.md +16 -0
  4. data/Rakefile +55 -0
  5. data/bin/oversip +182 -0
  6. data/ext/common/c_util.h +74 -0
  7. data/ext/common/ruby_c_util.h +88 -0
  8. data/ext/sip_parser/common_headers.h +209 -0
  9. data/ext/sip_parser/ext_help.h +18 -0
  10. data/ext/sip_parser/extconf.rb +3 -0
  11. data/ext/sip_parser/sip_parser.c +29649 -0
  12. data/ext/sip_parser/sip_parser.h +227 -0
  13. data/ext/sip_parser/sip_parser_ruby.c +1292 -0
  14. data/ext/stud/extconf.rb +27 -0
  15. data/ext/stud/stud.tar.gz +0 -0
  16. data/ext/stun/ext_help.h +16 -0
  17. data/ext/stun/extconf.rb +3 -0
  18. data/ext/stun/stun_ruby.c +391 -0
  19. data/ext/utils/ext_help.h +14 -0
  20. data/ext/utils/extconf.rb +3 -0
  21. data/ext/utils/haproxy_protocol.c +6163 -0
  22. data/ext/utils/haproxy_protocol.h +27 -0
  23. data/ext/utils/ip_utils.c +5952 -0
  24. data/ext/utils/ip_utils.h +61 -0
  25. data/ext/utils/outbound_utils.c +3227 -0
  26. data/ext/utils/outbound_utils.h +27 -0
  27. data/ext/utils/utils_ruby.c +384 -0
  28. data/ext/utils/utils_ruby.h +75 -0
  29. data/ext/websocket_framing_utils/ext_help.h +18 -0
  30. data/ext/websocket_framing_utils/extconf.rb +3 -0
  31. data/ext/websocket_framing_utils/ws_framing_utils.h +46 -0
  32. data/ext/websocket_framing_utils/ws_framing_utils_ruby.c +135 -0
  33. data/ext/websocket_http_parser/ext_help.h +18 -0
  34. data/ext/websocket_http_parser/extconf.rb +3 -0
  35. data/ext/websocket_http_parser/ws_http_parser.c +2598 -0
  36. data/ext/websocket_http_parser/ws_http_parser.h +86 -0
  37. data/ext/websocket_http_parser/ws_http_parser_ruby.c +630 -0
  38. data/lib/oversip/config.rb +541 -0
  39. data/lib/oversip/config_validators.rb +126 -0
  40. data/lib/oversip/errors.rb +7 -0
  41. data/lib/oversip/fiber_pool.rb +56 -0
  42. data/lib/oversip/launcher.rb +507 -0
  43. data/lib/oversip/logger.rb +170 -0
  44. data/lib/oversip/master_process.rb +67 -0
  45. data/lib/oversip/posix_mq.rb +121 -0
  46. data/lib/oversip/proxies_config.rb +169 -0
  47. data/lib/oversip/ruby_ext/eventmachine.rb +38 -0
  48. data/lib/oversip/sip/client_transaction.rb +587 -0
  49. data/lib/oversip/sip/constants.rb +87 -0
  50. data/lib/oversip/sip/grammar/name_addr.rb +27 -0
  51. data/lib/oversip/sip/grammar/uri.rb +116 -0
  52. data/lib/oversip/sip/launcher.rb +180 -0
  53. data/lib/oversip/sip/listeners/ipv4_tcp_client.rb +21 -0
  54. data/lib/oversip/sip/listeners/ipv4_tcp_server.rb +21 -0
  55. data/lib/oversip/sip/listeners/ipv4_tls_client.rb +21 -0
  56. data/lib/oversip/sip/listeners/ipv4_tls_server.rb +21 -0
  57. data/lib/oversip/sip/listeners/ipv4_tls_tunnel_server.rb +21 -0
  58. data/lib/oversip/sip/listeners/ipv4_udp_server.rb +20 -0
  59. data/lib/oversip/sip/listeners/ipv6_tcp_client.rb +21 -0
  60. data/lib/oversip/sip/listeners/ipv6_tcp_server.rb +21 -0
  61. data/lib/oversip/sip/listeners/ipv6_tls_client.rb +21 -0
  62. data/lib/oversip/sip/listeners/ipv6_tls_server.rb +21 -0
  63. data/lib/oversip/sip/listeners/ipv6_tls_tunnel_server.rb +21 -0
  64. data/lib/oversip/sip/listeners/ipv6_udp_server.rb +20 -0
  65. data/lib/oversip/sip/listeners/reactor.rb +39 -0
  66. data/lib/oversip/sip/listeners/tcp_client.rb +73 -0
  67. data/lib/oversip/sip/listeners/tcp_reactor.rb +185 -0
  68. data/lib/oversip/sip/listeners/tcp_server.rb +71 -0
  69. data/lib/oversip/sip/listeners/tls_client.rb +117 -0
  70. data/lib/oversip/sip/listeners/tls_server.rb +70 -0
  71. data/lib/oversip/sip/listeners/tls_tunnel_reactor.rb +113 -0
  72. data/lib/oversip/sip/listeners/tls_tunnel_server.rb +61 -0
  73. data/lib/oversip/sip/listeners/udp_reactor.rb +213 -0
  74. data/lib/oversip/sip/listeners.rb +28 -0
  75. data/lib/oversip/sip/logic.rb +14 -0
  76. data/lib/oversip/sip/message.rb +168 -0
  77. data/lib/oversip/sip/message_processor.rb +202 -0
  78. data/lib/oversip/sip/modules/core.rb +200 -0
  79. data/lib/oversip/sip/modules/registrar_without_path.rb +75 -0
  80. data/lib/oversip/sip/modules/user_assertion.rb +123 -0
  81. data/lib/oversip/sip/proxy.rb +460 -0
  82. data/lib/oversip/sip/request.rb +128 -0
  83. data/lib/oversip/sip/response.rb +30 -0
  84. data/lib/oversip/sip/rfc3263.rb +646 -0
  85. data/lib/oversip/sip/server_transaction.rb +295 -0
  86. data/lib/oversip/sip/sip.rb +74 -0
  87. data/lib/oversip/sip/tags.rb +39 -0
  88. data/lib/oversip/sip/timers.rb +55 -0
  89. data/lib/oversip/sip/transport_manager.rb +129 -0
  90. data/lib/oversip/syslogger_process.rb +119 -0
  91. data/lib/oversip/tls.rb +179 -0
  92. data/lib/oversip/utils.rb +25 -0
  93. data/lib/oversip/version.rb +23 -0
  94. data/lib/oversip/websocket/constants.rb +56 -0
  95. data/lib/oversip/websocket/default_policy.rb +19 -0
  96. data/lib/oversip/websocket/http_request.rb +63 -0
  97. data/lib/oversip/websocket/launcher.rb +207 -0
  98. data/lib/oversip/websocket/listeners/ipv4_tcp_server.rb +15 -0
  99. data/lib/oversip/websocket/listeners/ipv4_tls_server.rb +15 -0
  100. data/lib/oversip/websocket/listeners/ipv4_tls_tunnel_server.rb +15 -0
  101. data/lib/oversip/websocket/listeners/ipv6_tcp_server.rb +15 -0
  102. data/lib/oversip/websocket/listeners/ipv6_tls_server.rb +15 -0
  103. data/lib/oversip/websocket/listeners/ipv6_tls_tunnel_server.rb +15 -0
  104. data/lib/oversip/websocket/listeners/tcp_server.rb +265 -0
  105. data/lib/oversip/websocket/listeners/tls_server.rb +69 -0
  106. data/lib/oversip/websocket/listeners/tls_tunnel_server.rb +100 -0
  107. data/lib/oversip/websocket/listeners.rb +12 -0
  108. data/lib/oversip/websocket/ws_app.rb +75 -0
  109. data/lib/oversip/websocket/ws_apps/ipv4_ws_sip_app.rb +21 -0
  110. data/lib/oversip/websocket/ws_apps/ipv4_wss_sip_app.rb +21 -0
  111. data/lib/oversip/websocket/ws_apps/ipv6_ws_sip_app.rb +21 -0
  112. data/lib/oversip/websocket/ws_apps/ipv6_wss_sip_app.rb +22 -0
  113. data/lib/oversip/websocket/ws_apps/ws_autobahn_app.rb +23 -0
  114. data/lib/oversip/websocket/ws_apps/ws_sip_app.rb +156 -0
  115. data/lib/oversip/websocket/ws_apps.rb +9 -0
  116. data/lib/oversip/websocket/ws_framing.rb +597 -0
  117. data/lib/oversip.rb +59 -0
  118. data/test/oversip_test_helper.rb +20 -0
  119. data/test/test_http_parser.rb +73 -0
  120. data/test/test_sip_parser.rb +139 -0
  121. metadata +256 -0
@@ -0,0 +1,73 @@
1
+ # coding: utf-8
2
+
3
+ require "oversip_test_helper"
4
+
5
+
6
+ class TestHttpParser < OverSIPTest
7
+
8
+ def parse data
9
+ parser = OverSIP::WebSocket::HttpRequestParser.new
10
+ buffer = IO::Buffer.new
11
+ request = OverSIP::WebSocket::HttpRequest.new
12
+
13
+ buffer << data
14
+
15
+ unless bytes_parsed = parser.execute(request, buffer.to_str, 0)
16
+ raise "ERROR: parsing error: \"#{parser.error}\""
17
+ end
18
+
19
+ if parser.finished?
20
+ buffer.read bytes_parsed
21
+ if request.content_length and ! request.content_length.zero?
22
+ request.body = buffer.read request.content_length
23
+ end
24
+ if buffer.size != 0
25
+ raise "ERROR: buffer is not empty after parsing"
26
+ end
27
+ else
28
+ raise "ERROR: parsed NOT finished!"
29
+ end
30
+
31
+ [parser, request]
32
+ end
33
+ private :parse
34
+
35
+ def test_parse_http_get
36
+ parser, request = parse <<-END
37
+ GET http://server.example.coM./chat?qwe=QWE&asd=#fragment HTTP/1.1\r
38
+ Host: server.example.Com.\r
39
+ Upgrade: WebSocket\r
40
+ Connection: keep-Alive , Upgrade\r
41
+ Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==\r
42
+ Sec-WebSocket-protocol: foo , chat.lalala.com\r
43
+ Sec-WebSocket-protocol: xmpp.nonaino.org\r
44
+ Origin: http://example.Com\r
45
+ Sec-WebSocket-Version: 8\r
46
+ noNaino-lALA : qwe\r
47
+ NOnaino-lala: asd\r
48
+ \r
49
+ END
50
+
51
+ assert_equal request.http_method, :GET
52
+ assert_equal request.http_version, "HTTP/1.1"
53
+
54
+ assert_equal "/chat?qwe=QWE&asd=", request.uri
55
+ assert_equal "/chat", request.uri_path
56
+ assert_equal "qwe=QWE&asd=", request.uri_query
57
+ assert_equal "fragment", request.uri_fragment
58
+ assert_equal request.uri_scheme, :http
59
+ assert_equal "server.example.com", request.host
60
+ assert_nil request.port
61
+
62
+ assert_nil request.content_length
63
+ assert request.hdr_connection.include?("upgrade")
64
+ assert_equal "websocket", request.hdr_upgrade
65
+ assert_equal 8, request.hdr_sec_websocket_version
66
+ assert_equal "dGhlIHNhbXBsZSBub25jZQ==", request.hdr_sec_websocket_key
67
+ assert_equal "http://example.com", request.hdr_origin
68
+ assert_equal ["foo", "chat.lalala.com", "xmpp.nonaino.org"], request.hdr_sec_websocket_protocol
69
+
70
+ assert_equal ["qwe", "asd"], request["Nonaino-Lala"]
71
+ end
72
+
73
+ end
@@ -0,0 +1,139 @@
1
+ # coding: utf-8
2
+
3
+ require "oversip_test_helper"
4
+
5
+
6
+ class TestSipParser < OverSIPTest
7
+
8
+ def parse data
9
+ parser = OverSIP::SIP::MessageParser.new
10
+ buffer = IO::Buffer.new
11
+
12
+ buffer << data
13
+
14
+ unless bytes_parsed = parser.execute(buffer.to_str, 0)
15
+ raise "ERROR: parsing error for class #{parser.parsed.class}: \"#{parser.error}\""
16
+ end
17
+
18
+ msg = parser.parsed
19
+
20
+ if parser.finished?
21
+ buffer.read bytes_parsed
22
+ if msg.content_length and ! msg.content_length.zero?
23
+ msg.body = buffer.read msg.content_length
24
+ end
25
+ if buffer.size != 0
26
+ raise "ERROR: buffer is not empty after parsing"
27
+ end
28
+ else
29
+ raise "ERROR: parsed NOT finished! (msg.class = #{msg.class})"
30
+ end
31
+
32
+ parser.post_parsing
33
+
34
+ [parser, msg]
35
+ end
36
+ private :parse
37
+
38
+ def test_parse_sip_invite
39
+ parser, msg = parse <<-END
40
+ INVITE sip:sips%3Auser%40example.com@example.NET.;transport=tcp;FOO=baz?Subject=lalala SIP/2.0\r
41
+ via: SIP/2.0/UDP host5.example.net;branch=z9hG4bKkdjuw ; Rport\r
42
+ To: <tel:+(34)-94-499-44-22;lalala=lololo>\r
43
+ from: <sips:I%20have%20spaces@[2001:123:Ab:0:0::123]:9999> ;\r
44
+ tag=938\r
45
+ Route: <sip:qweqwe/.+asdasd@1.2.3.4:7777;LR;ob>,\r
46
+ "Server Ñ€áéíóú" <SIP:[01::000:A0f]:6666;lr>\r
47
+ Max-Forwards: 87\r
48
+ _i: esc01.239409asdfakjkn23onasd0-3234\r
49
+ CSeq: 234234 INVITE\r
50
+ C: application/sdp\r
51
+ Contact:\r
52
+ <sip:cal%6Cer@host5.example.net;%6C%72;n%61me=v%61lue%25%34%31>\r
53
+ Content-Length: 150\r
54
+ \r
55
+ v=0\r
56
+ o=mhandley 29739 7272939 IN IP4 192.0.2.1\r
57
+ s=-\r
58
+ c=IN IP4 192.0.2.1\r
59
+ t=0 0\r
60
+ m=audio 49217 RTP/AVP 0 12\r
61
+ m=video 3227 RTP/AVP 31\r
62
+ a=rtpmap:31 LPC\r
63
+ END
64
+
65
+ assert_equal msg.class, OverSIP::SIP::Request
66
+ assert_equal msg.sip_method, :INVITE
67
+ assert_equal msg.sip_version, "SIP/2.0"
68
+ assert_true msg.initial?
69
+
70
+ assert_false parser.duplicated_core_header?
71
+ assert_equal parser.missing_core_header?, "Call-ID"
72
+
73
+ assert_equal msg.num_vias, 1
74
+ assert_equal msg.via_sent_by_host, "host5.example.net"
75
+ assert_nil msg.via_sent_by_port
76
+ assert_nil msg.via_received
77
+ assert_true msg.via_rport?
78
+ assert_equal msg.via_core_value, "SIP/2.0/UDP host5.example.net"
79
+ assert_nil msg.via_params
80
+
81
+ assert_equal msg.cseq, 234234
82
+ assert_equal msg.max_forwards, 87
83
+ assert_equal msg.content_length, 150
84
+ assert_equal msg.body.bytesize, 150
85
+
86
+ assert_equal "sip:sips%3auser%40example.com@example.net.;transport=tcp;foo=baz?subject=lalala", msg.ruri.uri.downcase
87
+ assert_equal :sip, msg.ruri.scheme
88
+ assert_equal "sips:user@example.com", msg.ruri.user
89
+ assert_equal "example.net", msg.ruri.host
90
+ assert_equal :domain, msg.ruri.host_type
91
+ assert_nil msg.ruri.port
92
+ assert_equal({"transport" => "tcp", "foo" => "baz"}, msg.ruri.params)
93
+ assert_equal "?Subject=lalala", msg.ruri.headers
94
+ assert_equal :tcp, msg.ruri.transport_param
95
+ assert_nil msg.ruri.phone_context_param
96
+
97
+ assert_equal :sips, msg.from.scheme
98
+ assert_equal "I have spaces", msg.from.user
99
+ assert OverSIP::Utils.compare_ips("[2001:123:ab::123]", msg.from.host)
100
+ assert_equal :ipv6_reference, msg.from.host_type
101
+ assert_equal 9999, msg.from.port
102
+ assert_equal({}, msg.from.params)
103
+ assert_equal "938", msg.from_tag
104
+
105
+ assert_equal :tel, msg.to.scheme
106
+ assert_equal "+34944994422", msg.to.user
107
+ assert_nil msg.to.host
108
+ assert_nil msg.to.port
109
+ assert_equal({"lalala" => "lololo"}, msg.to.params)
110
+ assert_nil msg.to_tag
111
+
112
+ assert_equal :sip, msg.contact.scheme
113
+ assert_equal "caller", msg.contact.user
114
+ assert_equal "host5.example.net", msg.contact.host
115
+ assert_equal :domain, msg.contact.host_type
116
+ assert_nil msg.contact.port
117
+ assert_equal({"%6c%72" => nil, "n%61me" => "v%61lue%25%34%31"}, msg.contact.params)
118
+
119
+ assert_equal 2, msg.routes.size
120
+
121
+ assert_nil msg.routes.first.display_name
122
+ assert_equal :sip, msg.routes.first.scheme
123
+ assert_equal "qweqwe/.+asdasd", msg.routes.first.user
124
+ assert OverSIP::Utils.compare_ips("1.2.3.4", msg.routes.first.host)
125
+ assert_equal "1.2.3.4", msg.routes.first.host
126
+ assert_equal :ipv4, msg.routes.first.host_type
127
+ assert_equal 7777, msg.routes.first.port
128
+ assert_true msg.routes.first.lr_param?
129
+
130
+ assert_equal "Server Ñ€áéíóú", msg.routes[1].display_name
131
+ assert_equal :sip, msg.routes[1].scheme
132
+ assert_nil msg.routes[1].user
133
+ assert OverSIP::Utils.compare_ips("[1::a0f]", msg.routes[1].host)
134
+ assert_equal :ipv6_reference, msg.routes[1].host_type
135
+ assert_equal 6666, msg.routes[1].port
136
+ assert_true msg.routes[1].lr_param?
137
+ end
138
+
139
+ end
metadata ADDED
@@ -0,0 +1,256 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: oversip
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Iñaki Baz Castillo
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-07-11 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: eventmachine-le
16
+ requirement: &22334580 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 1.1.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *22334580
25
+ - !ruby/object:Gem::Dependency
26
+ name: iobuffer
27
+ requirement: &22333920 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: 1.1.2
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *22333920
36
+ - !ruby/object:Gem::Dependency
37
+ name: em-posixmq
38
+ requirement: &22333300 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: 0.2.3
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *22333300
47
+ - !ruby/object:Gem::Dependency
48
+ name: em-udns
49
+ requirement: &22332660 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: 0.3.6
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *22332660
58
+ - !ruby/object:Gem::Dependency
59
+ name: escape_utils
60
+ requirement: &22332180 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: 0.2.4
66
+ type: :runtime
67
+ prerelease: false
68
+ version_requirements: *22332180
69
+ - !ruby/object:Gem::Dependency
70
+ name: term-ansicolor
71
+ requirement: &22331800 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: *22331800
80
+ - !ruby/object:Gem::Dependency
81
+ name: posix-spawn
82
+ requirement: &22331320 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :runtime
89
+ prerelease: false
90
+ version_requirements: *22331320
91
+ description: ! "OverSIP is an async SIP server. Built on top of Ruby EventMachine\n
92
+ \ library it follows the Reactor Pattern, allowing thousands of concurrent connections
93
+ and requests\n handled by a single processor in a never-blocking fashion. It
94
+ supports SIP over UDP, TCP, TLS and\n WebSocket transports, full RFC 3263 (async
95
+ DNS resolution), Outbound (RFC 5626) and more features."
96
+ email: ibc@aliax.net
97
+ executables:
98
+ - oversip
99
+ extensions:
100
+ - ext/sip_parser/extconf.rb
101
+ - ext/stun/extconf.rb
102
+ - ext/utils/extconf.rb
103
+ - ext/websocket_http_parser/extconf.rb
104
+ - ext/websocket_framing_utils/extconf.rb
105
+ - ext/stud/extconf.rb
106
+ extra_rdoc_files: []
107
+ files:
108
+ - lib/oversip.rb
109
+ - lib/oversip/posix_mq.rb
110
+ - lib/oversip/proxies_config.rb
111
+ - lib/oversip/utils.rb
112
+ - lib/oversip/errors.rb
113
+ - lib/oversip/master_process.rb
114
+ - lib/oversip/tls.rb
115
+ - lib/oversip/config_validators.rb
116
+ - lib/oversip/version.rb
117
+ - lib/oversip/logger.rb
118
+ - lib/oversip/fiber_pool.rb
119
+ - lib/oversip/syslogger_process.rb
120
+ - lib/oversip/config.rb
121
+ - lib/oversip/launcher.rb
122
+ - lib/oversip/ruby_ext/eventmachine.rb
123
+ - lib/oversip/sip/rfc3263.rb
124
+ - lib/oversip/sip/sip.rb
125
+ - lib/oversip/sip/listeners.rb
126
+ - lib/oversip/sip/proxy.rb
127
+ - lib/oversip/sip/server_transaction.rb
128
+ - lib/oversip/sip/logic.rb
129
+ - lib/oversip/sip/tags.rb
130
+ - lib/oversip/sip/request.rb
131
+ - lib/oversip/sip/timers.rb
132
+ - lib/oversip/sip/message_processor.rb
133
+ - lib/oversip/sip/response.rb
134
+ - lib/oversip/sip/transport_manager.rb
135
+ - lib/oversip/sip/client_transaction.rb
136
+ - lib/oversip/sip/message.rb
137
+ - lib/oversip/sip/constants.rb
138
+ - lib/oversip/sip/launcher.rb
139
+ - lib/oversip/sip/listeners/tls_server.rb
140
+ - lib/oversip/sip/listeners/tcp_reactor.rb
141
+ - lib/oversip/sip/listeners/ipv4_tls_server.rb
142
+ - lib/oversip/sip/listeners/ipv6_udp_server.rb
143
+ - lib/oversip/sip/listeners/ipv6_tcp_server.rb
144
+ - lib/oversip/sip/listeners/reactor.rb
145
+ - lib/oversip/sip/listeners/ipv4_udp_server.rb
146
+ - lib/oversip/sip/listeners/udp_reactor.rb
147
+ - lib/oversip/sip/listeners/tcp_server.rb
148
+ - lib/oversip/sip/listeners/tcp_client.rb
149
+ - lib/oversip/sip/listeners/tls_client.rb
150
+ - lib/oversip/sip/listeners/ipv4_tcp_client.rb
151
+ - lib/oversip/sip/listeners/ipv6_tcp_client.rb
152
+ - lib/oversip/sip/listeners/ipv4_tcp_server.rb
153
+ - lib/oversip/sip/listeners/tls_tunnel_server.rb
154
+ - lib/oversip/sip/listeners/ipv4_tls_client.rb
155
+ - lib/oversip/sip/listeners/ipv6_tls_server.rb
156
+ - lib/oversip/sip/listeners/tls_tunnel_reactor.rb
157
+ - lib/oversip/sip/listeners/ipv6_tls_tunnel_server.rb
158
+ - lib/oversip/sip/listeners/ipv6_tls_client.rb
159
+ - lib/oversip/sip/listeners/ipv4_tls_tunnel_server.rb
160
+ - lib/oversip/sip/grammar/uri.rb
161
+ - lib/oversip/sip/grammar/name_addr.rb
162
+ - lib/oversip/sip/modules/registrar_without_path.rb
163
+ - lib/oversip/sip/modules/core.rb
164
+ - lib/oversip/sip/modules/user_assertion.rb
165
+ - lib/oversip/websocket/listeners.rb
166
+ - lib/oversip/websocket/ws_app.rb
167
+ - lib/oversip/websocket/http_request.rb
168
+ - lib/oversip/websocket/ws_framing.rb
169
+ - lib/oversip/websocket/constants.rb
170
+ - lib/oversip/websocket/default_policy.rb
171
+ - lib/oversip/websocket/launcher.rb
172
+ - lib/oversip/websocket/ws_apps.rb
173
+ - lib/oversip/websocket/listeners/tls_server.rb
174
+ - lib/oversip/websocket/listeners/ipv4_tls_server.rb
175
+ - lib/oversip/websocket/listeners/ipv6_tcp_server.rb
176
+ - lib/oversip/websocket/listeners/tcp_server.rb
177
+ - lib/oversip/websocket/listeners/ipv4_tcp_server.rb
178
+ - lib/oversip/websocket/listeners/tls_tunnel_server.rb
179
+ - lib/oversip/websocket/listeners/ipv6_tls_server.rb
180
+ - lib/oversip/websocket/listeners/ipv6_tls_tunnel_server.rb
181
+ - lib/oversip/websocket/listeners/ipv4_tls_tunnel_server.rb
182
+ - lib/oversip/websocket/ws_apps/ipv6_wss_sip_app.rb
183
+ - lib/oversip/websocket/ws_apps/ipv4_ws_sip_app.rb
184
+ - lib/oversip/websocket/ws_apps/ipv4_wss_sip_app.rb
185
+ - lib/oversip/websocket/ws_apps/ipv6_ws_sip_app.rb
186
+ - lib/oversip/websocket/ws_apps/ws_autobahn_app.rb
187
+ - lib/oversip/websocket/ws_apps/ws_sip_app.rb
188
+ - ext/common/ruby_c_util.h
189
+ - ext/common/c_util.h
190
+ - ext/sip_parser/extconf.rb
191
+ - ext/sip_parser/sip_parser.h
192
+ - ext/sip_parser/ext_help.h
193
+ - ext/sip_parser/common_headers.h
194
+ - ext/sip_parser/sip_parser.c
195
+ - ext/sip_parser/sip_parser_ruby.c
196
+ - ext/stun/extconf.rb
197
+ - ext/stun/ext_help.h
198
+ - ext/stun/stun_ruby.c
199
+ - ext/utils/extconf.rb
200
+ - ext/utils/haproxy_protocol.h
201
+ - ext/utils/ip_utils.h
202
+ - ext/utils/ext_help.h
203
+ - ext/utils/utils_ruby.h
204
+ - ext/utils/outbound_utils.h
205
+ - ext/utils/haproxy_protocol.c
206
+ - ext/utils/utils_ruby.c
207
+ - ext/utils/outbound_utils.c
208
+ - ext/utils/ip_utils.c
209
+ - ext/websocket_http_parser/extconf.rb
210
+ - ext/websocket_http_parser/ext_help.h
211
+ - ext/websocket_http_parser/ws_http_parser.h
212
+ - ext/websocket_http_parser/ws_http_parser.c
213
+ - ext/websocket_http_parser/ws_http_parser_ruby.c
214
+ - ext/websocket_framing_utils/extconf.rb
215
+ - ext/websocket_framing_utils/ext_help.h
216
+ - ext/websocket_framing_utils/ws_framing_utils.h
217
+ - ext/websocket_framing_utils/ws_framing_utils_ruby.c
218
+ - ext/stud/extconf.rb
219
+ - ext/stud/stud.tar.gz
220
+ - Rakefile
221
+ - README.md
222
+ - AUTHORS.txt
223
+ - LICENSE.txt
224
+ - test/oversip_test_helper.rb
225
+ - test/test_sip_parser.rb
226
+ - test/test_http_parser.rb
227
+ - bin/oversip
228
+ homepage: http://www.oversip.net
229
+ licenses: []
230
+ post_install_message:
231
+ rdoc_options: []
232
+ require_paths:
233
+ - lib
234
+ required_ruby_version: !ruby/object:Gem::Requirement
235
+ none: false
236
+ requirements:
237
+ - - ~>
238
+ - !ruby/object:Gem::Version
239
+ version: 1.9.2
240
+ required_rubygems_version: !ruby/object:Gem::Requirement
241
+ none: false
242
+ requirements:
243
+ - - ! '>='
244
+ - !ruby/object:Gem::Version
245
+ version: '0'
246
+ requirements: []
247
+ rubyforge_project:
248
+ rubygems_version: 1.8.11
249
+ signing_key:
250
+ specification_version: 3
251
+ summary: the SIP dreams factory
252
+ test_files:
253
+ - test/oversip_test_helper.rb
254
+ - test/test_sip_parser.rb
255
+ - test/test_http_parser.rb
256
+ has_rdoc: false