Line data Source code
1 : #include "../burp.h" 2 : #include "../asfd.h" 3 : #include "../async.h" 4 : #include "../cmd.h" 5 : #include "../cntr.h" 6 : #include "../log.h" 7 : #include "quota.h" 8 : 9 0 : static void quota_log_bytes(struct async *as, 10 : const char *msg, uint64_t byte, uint64_t quota) 11 : { 12 0 : as->asfd->write_str(as->asfd, CMD_WARNING, msg); 13 0 : logp("Bytes estimated: %" PRIu64 "%s\n", byte, bytes_to_human(byte)); 14 0 : logp("%s: %" PRIu64 "%s\n", msg, quota, bytes_to_human(quota)); 15 0 : } 16 : 17 : // Return O for OK, -1 if the estimated size is greater than hard_quota 18 0 : int check_quota(struct async *as, struct cntr *cntr, 19 : uint64_t hard_quota, uint64_t soft_quota) 20 : { 21 0 : uint64_t byte; 22 : 23 0 : byte=cntr->ent[(uint8_t)CMD_BYTES_ESTIMATED]->count; 24 : 25 0 : if(hard_quota && byte>hard_quota) 26 : { 27 0 : quota_log_bytes(as, "Hard quota exceeded", byte, soft_quota); 28 0 : return -1; 29 : } 30 : 31 0 : if(soft_quota && byte>soft_quota) 32 0 : quota_log_bytes(as, "Soft quota exceeded", byte, soft_quota); 33 : 34 : return 0; 35 : }