- /* We got a result. Now see if we should return OK or FAIL for it */
- SPF_EVALUATE:
- debug_printf("SPF result is %s (%d)\n", SPF_strresult(rc), rc);
-
- if (action == SPF_PROCESS_GUESS && (!strcmp (SPF_strresult(rc), "none")))
- return spf_process(listptr, spf_envelope_sender, SPF_PROCESS_FALLBACK);
-
- while ((spf_result_id = string_nextinlist(&list, &sep,
- spf_result_id_buffer,
- sizeof(spf_result_id_buffer))) != NULL) {
- int negate = 0;
- int result = 0;
-
- /* Check for negation */
- if (spf_result_id[0] == '!') {
- negate = 1;
- spf_result_id++;
- };
-
- /* Check the result identifier */
- result = Ustrcmp(spf_result_id, spf_result_id_list[rc].name);
- if (!negate && result==0) return OK;
- if (negate && result!=0) return OK;
- };
-
- /* no match */
- return FAIL;