if (!(extraFlags & ENC_SALTED_CHECKSUM))
settings->SaltedChecksum = FALSE;
- if (refreshRectSupport == FALSE)
- settings->RefreshRect = FALSE;
- if (suppressOutputSupport == FALSE)
- settings->SuppressOutput = FALSE;
+ if (!settings->ServerMode)
+ {
+ /**
+ * Note: refreshRectSupport and suppressOutputSupport are
+ * server-only flags indicating to the client weather the
+ * respective PDUs are supported. See MS-RDPBCGR 2.2.7.1.1
+ */
+ if (!refreshRectSupport)
+ settings->RefreshRect = FALSE;
+
+ if (!suppressOutputSupport)
+ settings->SuppressOutput = FALSE;
+ }
return TRUE;
}
Stream_Read_UINT16(s, areas[index].bottom);
}
- IFCALL(update->RefreshRect, update->context, numberOfAreas, areas);
+ if (update->context->settings->RefreshRect)
+ IFCALL(update->RefreshRect, update->context, numberOfAreas, areas);
+ else
+ WLog_Print(update->log, WLOG_WARN, "ignoring refresh rect request from client");
free(areas);
if (allowDisplayUpdates > 0 && Stream_GetRemainingLength(s) < 8)
return FALSE;
- IFCALL(update->SuppressOutput, update->context, allowDisplayUpdates,
- allowDisplayUpdates > 0 ? (RECTANGLE_16*) Stream_Pointer(s) : NULL);
+ if (update->context->settings->SuppressOutput)
+ IFCALL(update->SuppressOutput, update->context, allowDisplayUpdates,
+ allowDisplayUpdates > 0 ? (RECTANGLE_16*) Stream_Pointer(s) : NULL);
+ else
+ WLog_Print(update->log, WLOG_WARN, "ignoring suppress output request from client");
return TRUE;
}