User engine session id re-generating on post

I get a redirect from user_engine when using

curl -i -X POST -d “<xml_data></xml_data>”
http://?_session_id=ABC

If I use
curl http://?_session_id=ABC

the GET works fine.If it was a routing issue, I would
expect the GET not to work.I also removed the -i, but no difference.

I’m using

if request.post?

end
if request.get?

end

in the controller, request.get? works fine, so I don’t think it’s a
controller problem, it’s not getting to the request.post?.

In the development.log file, when I do the GET, the session id
displayed is the same as the param value

Session ID: ABC
Parameters: {"_session_id"=>“ABC”, “action”=>…

but in the POST I see they are different:

Session ID: DEF
Parameters: {"_session_id"=>“ABC”, “action”=>…

Where the session id DEF is different from the session that had worked
previously (ABC).

Why is user engine generating a new session for POST? How is
user_engine making the determination that a new session id is needed?
As a result of the new session id, user engine thinks I’m a guest.