In Gazebo 0.7.0 (and, as far as I can tell, in SVN head), ray-cylinder collisions are not properly handled when the ray start point is within the infinite extension of the cylinder. No check is made to verify that the ray actually hits the end cap: the current code simply performs a ray-plane intersection between the ray and the (infinite) plane that contains the end of the cylinder. As a result, any ray originating inside the infinite extension of the cylinder will "collide" with the cylinder's end cap.
The attached patch (diff'd against the SVN copy of gazebo/server/bodies/dCylinder.cc) adds a check to ensure the ray-plane intersection point is within a radius of the cylinder's primary axis.
See http://ginger.autonomy.ri.cmu.edu/trestle/cylRay.world for a test case involving a SimpleSolid and a SICK.
Ray/Cylinder collision patch against gazebo 0.7.0