Commit Graph

291 Commits

Author SHA1 Message Date
Thomas Becker b36a6cc9cc jetty-9 checkout jetty-spdy from jetty-8 2012-07-27 15:51:14 +02:00
Jan Bartel c67b2d89c0 Merge remote-tracking branch 'origin/master' into jetty-8 2012-07-27 16:05:15 +10:00
Thomas Becker 37e0b8ffe4 spdy: StandardSession format toString method 2012-07-26 13:10:08 +02:00
Simone Bordet 6aba6d1e8c Jetty9 - Refactored SelectorManager and SelectChannelEndPoint.
Simplified Selectable interface, and improved idle timeout checking.
2012-07-20 13:04:28 +02:00
Simone Bordet dfeb761306 Jetty9 - Now calling SelectorManager.newConnection() from a single call site rather than having to duplicate the call in every newEndPoint() implementation. 2012-07-19 18:43:23 +02:00
Simone Bordet ebb7806edc Jetty9 - Implemented abstract methods on SelectorManager that were always implemented in the same way, making them consistent. 2012-07-18 19:47:10 +02:00
Jesse McConnell 136514948f [maven-release-plugin] prepare for next development iteration 2012-07-16 13:24:49 -05:00
Jesse McConnell 1bbc677a09 [maven-release-plugin] prepare release jetty-8.1.5.v20120716 2012-07-16 13:24:42 -05:00
Jesse McConnell f755d014cd [maven-release-plugin] prepare for next development iteration 2012-07-16 13:23:59 -05:00
Jesse McConnell 04b7e807a0 [maven-release-plugin] prepare release jetty-7.6.5.v20120716 2012-07-16 13:23:53 -05:00
Jesse McConnell c00bb2d6ca reset for release 2012-07-16 12:55:22 -05:00
Jesse McConnell f59b2a0632 reset release 2012-07-16 12:54:36 -05:00
Jesse McConnell 957d39da17 merge master 2012-07-16 12:51:18 -05:00
Jesse McConnell 9315ed8b73 Merge branch 'master' of ssh://git.eclipse.org/gitroot/jetty/org.eclipse.jetty.project 2012-07-13 12:24:50 -05:00
Jesse McConnell 205e8f74f0 [maven-release-plugin] prepare for next development iteration 2012-07-13 10:20:48 -05:00
Jesse McConnell c3b5269d60 [maven-release-plugin] prepare release jetty-8.1.5.v20120713 2012-07-13 10:20:23 -05:00
Thomas Becker 0fcb42e7bf spdy: add logging when ProxyEngineSelector resets a stream 2012-07-13 16:46:24 +02:00
Jesse McConnell 12ecc10c6a [maven-release-plugin] prepare for next development iteration 2012-07-13 09:35:08 -05:00
Jesse McConnell bf40110fb8 [maven-release-plugin] prepare release jetty-7.6.5.v20120713 2012-07-13 09:34:52 -05:00
Jesse McConnell 5222459aa7 Merge branch 'master' into jetty-8 2012-07-13 09:05:05 -05:00
Thomas Becker 198f713f7d spdy: spdy-proxy refactoring to allow multiple ProxyEngine implementations for different protocols. Header name fix to lowercase header names before creating the bytes to sent over the wire. 2012-07-13 11:53:56 +02:00
Simone Bordet 1843324bab Added support for X-Forwarded-For header. 2012-07-12 17:45:00 +02:00
Simone Bordet a7dab4bd2d Fixed spin loop caused by interaction of HttpGenerator._bypass and HttpGenerator.isBufferFull().
In HttpOutput.write(), an infinite spin loop was triggered when a previous write() set _bypass to true,
but _bypass was not reset after the write was complete. An additional write would have caused
a call to isBufferFull(), implemented in terms of _bypass, which would have returned true erroneously,
and this would have caused the infinite spin loop.
Now we properly reset _bypass when we fully write a data frame, so that isBufferFull() can properly
return false and allow for further writes.
2012-07-12 17:16:57 +02:00
Simone Bordet 0ad04eca6e Fixed test that was broken by changes to the pushed URI header in spdy/2. 2012-07-12 15:13:47 +02:00
Jesse McConnell 81d72052c8 merged master to jetty-8 2012-07-11 14:04:49 -05:00
Jesse McConnell aa941f5711 quick pass through to clean up missing or incorrect license blocks 2012-07-11 12:29:46 -05:00
Jesse McConnell 0fa17c13b1 Merge branch 'master' into jetty-8 2012-07-11 10:10:00 -05:00
Simone Bordet 6348a96071 Added test to show how to connect to an external server with the SPDY client. 2012-07-10 16:16:41 +02:00
Simone Bordet 9253bb791e Added capability of customizing request and response headers by overriding a method, and added Via header also on responses. 2012-07-09 16:00:44 +02:00
Thomas Becker e3b6344641 spdy: proxy fix to keep scheme on forwarded requests 2012-07-09 14:09:47 +02:00
Simone Bordet 4738584ccd Improved proxy logging. 2012-07-09 13:21:32 +02:00
Thomas Becker 77c673c89b spdy: push referrer call period starts when first resource is added. Before it started when main resource was created 2012-07-06 17:33:52 +02:00
Simone Bordet 652fcc3552 Merge "spdy: move x-spdy-push header to internal request. fix StandardStream.toString()" 2012-07-06 09:54:57 -04:00
Simone Bordet dd7eb898c9 Merge "spdy: different push strategies per connection factory" 2012-07-06 09:53:28 -04:00
Thomas Becker ac7c3c8f0d spdy: move x-spdy-push header to internal request. fix StandardStream.toString() 2012-07-06 15:46:31 +02:00
Thomas Becker e7a52df43d spdy: different push strategies per connection factory 2012-07-06 15:23:06 +02:00
Simone Bordet f4ebc89ee3 Merge "spdy: add StandardSession and StandardStream toString() improvements" 2012-07-06 06:52:27 -04:00
Thomas Becker 17b585d2ce spdy: isIfModifiedSinceHeaderPresent should have been removed, but slipped through a conflict merge. remove that method. 2012-07-05 17:47:50 +02:00
Thomas Becker 1ff0b18b94 spdy: ReferrerPushStrategy configurable by SPDY version and add referrer push period 2012-07-04 19:28:08 +02:00
Simone Bordet 5e619ce525 Merge "spdy: push strategy move if-modified-since check from connection to ReferrerPushStrategy" 2012-07-04 11:38:19 -04:00
Thomas Becker 091fd73c3e spdy: add StandardSession and StandardStream toString() improvements 2012-07-04 15:43:09 +02:00
Greg Wilkins a519ecc1fb improved SPDY dump 2012-07-03 15:31:56 +02:00
Thomas Becker f09eaee521 spdy: push strategy move if-modified-since check from connection to ReferrerPushStrategy 2012-06-18 18:17:25 +02:00
Jesse McConnell 571b1da632 Merge branch 'master' into jetty-8 2012-06-14 15:46:59 -05:00
Simone Bordet 3c0e13a7fe Fixed test after changes to the semantic of last-good-stream-id. 2012-06-12 14:07:18 +02:00
Simone Bordet 0ac2b99f6a Final pass at the implementation of a reverse SPDY proxy. 2012-06-12 12:56:58 +02:00
Simone Bordet 8f356ea922 Second pass at the implementation of a reverse SPDY proxy. 2012-06-12 00:38:46 +02:00
Simone Bordet 479c957a68 First pass at the implementation of a reverse SPDY proxy. 2012-06-11 18:53:37 +02:00
Simone Bordet 457fdc74e5 Modified StandardStream to not depend on SynStreamFrame. 2012-06-11 14:32:14 +02:00
Simone Bordet aeb3a23482 Making sure that cancelling the attempt to connect closes the channel. 2012-06-11 14:25:51 +02:00
Simone Bordet af836eb4b7 As per the Future contract, throw CancellationException if the Promise has been cancelled. 2012-06-11 14:23:53 +02:00
Simone Bordet 836c647fb8 Added utility method valuesAsString(). 2012-06-11 14:22:46 +02:00
Simone Bordet 4bb0a30839 Overridden allocate() to support direct buffers. 2012-06-11 14:21:03 +02:00
Simone Bordet b4e45d1bb7 Added method to allow to clear the async connection factories, for better configurability. 2012-06-08 12:29:39 +02:00
Simone Bordet 8894cdc31d Reviewed handling of the last stream id.
Now the last stream id is updated when a SYN is received, as the spec states.
2012-06-08 10:13:18 +02:00
Simone Bordet 7f39b8b7a4 Refactored atomic updates of max and min into utility class Atomics. 2012-06-08 09:59:36 +02:00
Jan Bartel a7b1dd5e93 Merge remote-tracking branch 'origin/master' into jetty-8 2012-06-07 00:59:37 +02:00
Simone Bordet cd05259be4 Updated ReferrerPushStrategy to limit the number of associated resources. 2012-06-05 13:30:15 +02:00
Simone Bordet c7d09af3f2 Improved ReferrerPushStrategy to check also for content-type of pushed resources. 2012-06-05 12:33:10 +02:00
Simone Bordet f5d63e8626 Moved version() method to base test class, and using HTTPSPDYHeader instead of hardcoded strings. 2012-06-05 12:32:07 +02:00
Simone Bordet b9a3c98055 Benchmark for PushStrategy: HTTP vs SPDY no push vs SPDY push. 2012-06-04 19:28:45 +02:00
Simone Bordet 3b0076fc6a Fixed completeHeader() to just not attempt to detect the close state.
This is needed because the buffer to write may be big, and while it's
the only buffer, it may take multiple writes to be written.
If it takes more than one write, we risk to mark the first frame as closed
and subsequent frames cannot be written.

Fixed flush() to loop until the whole content has been flushed.
2012-06-04 19:28:45 +02:00
Simone Bordet e328cb8141 Improved push of resources by executing them in a different thread.\nAdded a HTTP header that signal to the application that the HTTP request is actually a push. 2012-06-04 19:28:45 +02:00
Simone Bordet 51f307ca7c Made test more reliable. 2012-06-04 19:28:45 +02:00
Simone Bordet 20c0f23cc7 Improved exception logging. 2012-06-04 19:28:45 +02:00
Simone Bordet f0c2fd2474 Improved error reporting in case of a write failure. 2012-06-04 19:28:45 +02:00
Greg Wilkins 96cbd53c47 jetty-9 jetty-server passing tests 2012-06-04 17:27:46 +02:00
Jan Bartel 9149a69446 Merge remote-tracking branch 'origin/master' into jetty-8 2012-06-04 13:49:25 +02:00
Simone Bordet c9251e5c73 Fixed bug in AbstractFrameBytes.compareTo(), avoiding NPE when comparing
FrameBytes that have a related stream, and those that don't (such as PING).
2012-06-03 22:53:06 +02:00
Simone Bordet a2a9fd59a2 Cosmetics. 2012-06-03 18:30:06 +02:00
Simone Bordet 2cb703b0b5 Fixed bug in case of large files being downloaded, and refactored writing of data frames. 2012-06-03 18:30:06 +02:00
Simone Bordet b0156b69bc Moved factory method for FlowControlStrategy to SPDYServerConnector for easier overriding. 2012-06-03 18:30:06 +02:00
Simone Bordet 4b29f18703 Removed constructors that take the "compressed" parameter (compression has been removed from the specification).
Added constructor that takes byte[], offset and length.
2012-06-03 18:30:05 +02:00
Simone Bordet d84889b2e9 Added configuration to enable NPN debugging, but commented out. 2012-06-01 22:13:26 +02:00
Simone Bordet eb47f93d86 Corrected order of SPDY protocols, so that most recent ones are chosen over older ones
(e.g. spdy/3 over spdy/2 over http/1.1).
2012-06-01 22:13:26 +02:00
Simone Bordet 6ff1a5fddc Implemented SPDY/3 HTTP layering. 2012-06-01 19:31:14 +02:00
Simone Bordet f872676a65 Added handling of the "slot" field in SYN_STREAM frames.
Modified parser and generator, and the session implementation
for now ignores this field.
2012-06-01 19:31:14 +02:00
Simone Bordet 70e4a103ec Implemented correctly SPDY v2 parsing and generation of the HEADERS frame. 2012-06-01 19:31:14 +02:00
Simone Bordet d12c2fec21 Renamed enum constant. 2012-06-01 19:31:14 +02:00
Simone Bordet 85e2503eec Added handling of the "slot" field in SYN_STREAM frames.
Modified parser and generator, and the session implementation
for now ignores this field.
2012-06-01 19:31:14 +02:00
Simone Bordet fb34f9b824 Added handling of Credential frames (for now just issuing a warning). 2012-06-01 19:31:14 +02:00
Simone Bordet 91105910ca Added handling of Certificate encoding and decoding. 2012-06-01 19:31:14 +02:00
Simone Bordet 395d49ba71 Basic implementation of CREDENTIAL frame, parser and generator. 2012-06-01 19:31:14 +02:00
Simone Bordet 24f4631a06 Refactored flow control, encapsulating it into a strategy.
The reason for this change is that the server will soon be serving both SPDY/2 and SPDY/3 browsers,
so the flow control strategy must be dynamically chosen depending on the SPDY version.
2012-06-01 10:46:18 +02:00
Simone Bordet 58dd9c3bf1 Enabled flow control configuration in SPDYClient. 2012-05-26 22:49:43 +02:00
Simone Bordet 0ea58ab1d5 Updated default maxIdleTime for SPDYClient to -1, so that the default from the SelectorManager is used. 2012-05-26 22:49:17 +02:00
Simone Bordet f41e43bce3 Updated to NPN API version 1.1.0, calling NextProtoNego.remove(), instead of using AtomicReferences to clear the SSLEngine references. 2012-05-26 22:44:57 +02:00
Simone Bordet 146f5edfde Updated to NPN API version 1.1.0, calling NextProtoNego.remove(), instead of using AtomicReferences to clear the SSLEngine references. 2012-05-26 22:31:02 +02:00
Thomas Becker b92e7b01a9 spdy: improve errorHandling, additional tests for sending big data with/without flow control, test that no more frames are sent on reset pushstreams, test for failing controller.writer(), small improvements
Change-Id: Ide714e01b0ed3753b3e37103de2665158f41f35d
2012-05-25 20:21:10 +02:00
Jesse McConnell 30e8e40ef2 [maven-release-plugin] prepare for next development iteration 2012-05-24 15:41:45 -05:00
Jesse McConnell 667cf9a643 [maven-release-plugin] prepare release jetty-8.1.4.v20120524 2012-05-24 15:41:38 -05:00
Jesse McConnell e45a89694a [maven-release-plugin] prepare for next development iteration 2012-05-24 09:30:58 -05:00
Jesse McConnell 36fc6fe890 [maven-release-plugin] prepare release jetty-8.1.4.v20120524 2012-05-24 09:30:52 -05:00
Jesse McConnell c7a9adaa32 reset for release 2012-05-24 08:33:44 -05:00
Greg Wilkins 1e662c6311 jetty-9 RequestTests passing 2012-05-23 22:52:27 +02:00
Jesse McConnell ea176f0586 [maven-release-plugin] prepare for next development iteration 2012-05-22 15:14:05 -05:00
Jesse McConnell 3fdda881d8 [maven-release-plugin] prepare release jetty-8.1.4.v20120522 2012-05-22 15:13:56 -05:00
Jesse McConnell 300a37319a [maven-release-plugin] prepare for next development iteration 2012-05-22 14:34:10 -05:00
Jesse McConnell 9ccd059375 [maven-release-plugin] prepare release jetty-7.6.4.v20120522 2012-05-22 14:33:59 -05:00
Jesse McConnell ce5e5cbad2 Merge branch 'master' into jetty-8 2012-05-22 14:02:58 -05:00
Thomas Becker b371315606 make spdy tests more reliable: fix race condition with goAway frame
Change-Id: I3bbdb8eee4a12f082f83730209bd0f8cf2fe7d03
2012-05-22 18:16:12 +02:00
Jan Bartel 34954bc617 Merge remote-tracking branch 'origin/master' into jetty-8 2012-05-22 17:28:40 +02:00
Simone Bordet ced2d9efd3 Made test more reliable. 2012-05-22 15:55:42 +02:00
Greg Wilkins b9a2661a4e jetty-9 removed HttpException 2012-05-17 15:12:45 +02:00
Greg Wilkins 68f8e073db jetty-9 progress on unit tests and LocalConnector 2012-05-14 19:58:09 +02:00
Thomas Becker fdf6dac1d3 spdy: no push if the main request contains if-modified-since header
Change-Id: I9462d8d3ff68dd9cf74ad5a45a093e598c6d704b
2012-05-14 18:50:49 +02:00
Simone Bordet 4b8f6b8413 jetty-9 SelectorManager refactorings. 2012-05-11 19:30:30 +02:00
Simone Bordet 9e8b2f1aad SSL refactorings. 2012-05-11 10:19:47 +02:00
Thomas Becker 5687aa8beb SPDY: move probably blocking/long running flush out of synchronized block in StandardSession.syn(..)
Change-Id: I29b748495adb1fa48fab8dc130a8067ff3be6bc5
2012-05-10 12:29:58 +02:00
Greg Wilkins e348f2d4f5 jetty-9 progress on jetty-server 2012-05-10 12:19:16 +02:00
Greg Wilkins 2b9ff87e02 Merge branch 'jetty-9' of ssh://git.eclipse.org/gitroot/jetty/org.eclipse.jetty.project into jetty-9
Conflicts:
	jetty-io/src/main/java/org/eclipse/jetty/io/AsyncConnection.java
2012-05-09 11:19:52 +02:00
Greg Wilkins c1011c54a4 jetty-9 work in progress 2012-05-09 11:18:20 +02:00
Simone Bordet 44d2735a21 Changes to jetty-io related to integration with jetty-spdy. 2012-05-09 11:15:07 +02:00
Simone Bordet f0421723b8 SPDY refactorings. 2012-05-08 19:00:40 +02:00
Simone Bordet 72befc31b0 Adding the scheme header to the tests. 2012-05-07 22:45:21 +02:00
Simone Bordet 858c143b4f Fixed tests: pushed streams cannot reply. 2012-05-07 22:45:21 +02:00
Simone Bordet 14f8091252 Completed implementation of the referrer SPDY push strategy. 2012-05-07 22:45:21 +02:00
Simone Bordet 362e011851 Fixed SPDY push implementation, by correctly supporting pushed streams also on the client side. 2012-05-07 22:45:21 +02:00
Simone Bordet f607d34fdc Fixed Javadocs. 2012-05-07 22:45:21 +02:00
Simone Bordet 75414a05c0 Guarded against NPE in case of null Header. 2012-05-07 22:45:21 +02:00
Simone Bordet f75a9d83f1 Updates to the SPDY push implementation. 2012-05-07 22:45:21 +02:00
Simone Bordet 3ce07230d5 Initial draft for SPDY push. 2012-05-07 22:45:20 +02:00
Jan Bartel 2131a40559 Merge remote-tracking branch 'origin/master' into jetty-8 2012-05-07 13:54:30 +02:00
Thomas Becker f362fb0b48 spdy push implementation
Change-Id: Ibca8ce444588785f13c9890370422a2dc4b149ac
2012-04-27 17:44:22 +02:00
Simone Bordet 45b2c3b1b5 Merged from master after fixing typo in jetty-spdy.xml. 2012-04-16 15:55:49 +02:00
Simone Bordet 5ef7c3f2da Fixed typo: server --> Server. 2012-04-16 15:18:11 +02:00
Jesse McConnell b64909900c [maven-release-plugin] prepare for next development iteration 2012-04-13 15:31:47 -05:00
Jesse McConnell 2c0a35d430 [maven-release-plugin] prepare release jetty-8.1.3.v20120413 2012-04-13 15:31:38 -05:00
Jesse McConnell b963840d40 [maven-release-plugin] prepare for next development iteration 2012-04-13 15:29:14 -05:00
Jesse McConnell a652ee7396 [maven-release-plugin] prepare release jetty-7.6.3.v20120413 2012-04-13 15:29:05 -05:00
Simone Bordet 72040202d4 Reverted release back to 8.1.3-SNAPSHOT. 2012-04-13 17:27:37 +02:00
Simone Bordet 85710fb9ea Reverted release back to 7.6.3-SNAPSHOT. 2012-04-13 16:59:06 +02:00
Jesse McConnell 3b87e91cbe [maven-release-plugin] prepare for next development iteration 2012-04-12 10:29:30 -05:00
Jesse McConnell 308b010744 [maven-release-plugin] prepare release jetty-8.1.3.v20120412 2012-04-12 10:29:20 -05:00
Jesse McConnell cdcc0922c3 [maven-release-plugin] prepare for next development iteration 2012-04-12 09:49:52 -05:00
Jesse McConnell 5966c86571 [maven-release-plugin] prepare release jetty-7.6.3.v20120412 2012-04-12 09:49:46 -05:00
Greg Wilkins f144b6562e Merge remote-tracking branch 'origin/master' into jetty-8
Conflicts:
	jetty-servlets/src/test/java/org/eclipse/jetty/servlets/gzip/GzipTester.java
2012-04-12 22:20:01 +10:00
Simone Bordet a389d08c26 376201 - HalfClosed state not handled properly.
Addendum to restore previous behavior, where a closed stream was also half closed.
2012-04-12 12:57:04 +02:00
Greg Wilkins ee2d289f63 Merge remote-tracking branch 'origin/master' into jetty-8
Conflicts:
	jetty-npn/pom.xml
	jetty-osgi/jetty-osgi-boot-jsp/META-INF/MANIFEST.MF
	jetty-osgi/jetty-osgi-boot-jsp/src/main/java/org/eclipse/jetty/osgi/boot/jasper/WebappRegistrationCustomizerImpl.java
	jetty-osgi/jetty-osgi-boot-jsp/src/main/java/org/eclipse/jetty/osgi/boot/jsp/FragmentActivator.java
	jetty-osgi/jetty-osgi-boot-logback/META-INF/MANIFEST.MF
	jetty-osgi/jetty-osgi-boot-warurl/META-INF/MANIFEST.MF
	jetty-osgi/jetty-osgi-boot/META-INF/MANIFEST.MF
	jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/internal/webapp/WebBundleDeployerHelper.java
	jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/internal/webapp/WebBundleTrackerCustomizer.java
	jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/utils/internal/DefaultFileLocatorHelper.java
	jetty-osgi/jetty-osgi-equinoxtools/META-INF/MANIFEST.MF
	jetty-osgi/jetty-osgi-httpservice/META-INF/MANIFEST.MF
	jetty-spdy/spdy-jetty-http-webapp/pom.xml
	jetty-spdy/spdy-jetty-http/pom.xml
	jetty-spdy/spdy-jetty/pom.xml
2012-04-12 16:02:34 +10:00
Simone Bordet 972087d068 376201 - HalfClosed state not handled properly. 2012-04-11 12:18:56 +02:00
Simone Bordet 47c1587166 Strengthen the behavior of Stream methods to throw if they are used wrongly,
for example sending DATA frames before a REPLY and so on.
2012-04-11 10:39:23 +02:00
Simone Bordet 6ec1594010 Updated path location of the jetty config file for SPDY. 2012-04-05 17:33:48 +02:00
Simone Bordet eaacd69ede Moved from SLF4J to Jetty logging. 2012-04-05 17:30:05 +02:00
Simone Bordet 50f545b29a Vastly improved queueing of FrameBytes, by appending at the end of the queue (instead of iterating over the queue).
Also, implemented a better fix for the missing flush() in case of missing handlers: now instead of flushing in the write
completion handler (which could lead to stack overflows), we use the same mechanism employed for FrameBytes,
where we avoid stack overflows by dispatching to a new thread after few recursive invocations.
2012-04-04 19:21:16 +02:00
Simone Bordet 5b668fd6f1 375970 - HttpServletRequest.getRemoteAddr() returns null when HTTP is over SPDY. 2012-04-03 18:23:16 +02:00
Simone Bordet 6c464238b7 Updated dependency on jetty-npn, now that it moved to its own project at github and it's unlocked from jetty releases. 2012-04-03 12:00:38 +02:00
Greg Wilkins b2b4b2733b jetty-spdy fixed version of api 2012-04-03 10:12:46 +10:00
Simone Bordet d231b57144 Made the test more reliable. 2012-04-02 15:39:01 +02:00
Simone Bordet 30adf7cd18 Added missing flush after writing frames.
Frames may be written asynchronously but without a Handler, and therefore it was possible that frames
queued up, that one flush() was writing a frame without Handler, and the flush was stopping even if the
queue was non-empty.
Now we call flush() after writing a frame.
2012-04-02 13:22:06 +02:00
Simone Bordet b44fe2094f Fixed Maven warning. 2012-04-02 13:16:40 +02:00