I would think that the simple answer is to not just sit there and take it. You should have politely asked your waiter if he/she could move you to another table. No sense wasting 300 bucks on something you won't enjoy. I'm sure that the people who were sitting with this man knew he stank too. I wouldn't bother with warning him.