I want to reiterate what I said back in post #27 ... the issue is the uc_roles_order function in uc_roles.module is getting called twice. The first time it is as a new order, therefore $existing_role->expiration is null and the customer is granted the role for the first time.
The second time through the expiration date has already been set, so $existing_role->expiration is NOT null and it notes that this is a role renewal. Therefore you end up with orders that look like this:
03/12/2009
6:14:05 AM 1 Authorization and capture
ACCEPTED: This transaction has been approved.
03/12/2009
6:14:06 AM 1 Customer granted user role subscriber.
03/12/2009
6:14:07 AM 1 Customer user role subscriber renewed.
03/12/2009
6:14:07 AM - Order created through website.
It should not be performing the "renewal" step. This is why we're having role durations that are doubled in length.
