oversip 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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