The 49ers have reached an agreement with C.J. Spillman on a new three-year contract, according to a source with knowledge of the situation. The deal can't yet be finalized and San Francisco hasn't made an announcement. Spillman, who would have been a restricted free agent, spent his first two years with San Diego before joining the 49ers in 2010.