blob: 878b116c5ba29d15bc45bd80ae13ed62819a9af1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
#include "FuzzingInterface.h"
#include "FuzzingStreamListener.h"
namespace mozilla {
namespace net {
NS_IMPL_ISUPPORTS(FuzzingStreamListener, nsIStreamListener, nsIRequestObserver)
NS_IMETHODIMP
FuzzingStreamListener::OnStartRequest(nsIRequest* aRequest) {
FUZZING_LOG(("FuzzingStreamListener::OnStartRequest"));
return NS_OK;
}
NS_IMETHODIMP
FuzzingStreamListener::OnDataAvailable(nsIRequest* aRequest,
nsIInputStream* aInputStream,
uint64_t aOffset, uint32_t aCount) {
FUZZING_LOG(("FuzzingStreamListener::OnDataAvailable"));
static uint32_t const kCopyChunkSize = 128 * 1024;
uint32_t toRead = std::min<uint32_t>(aCount, kCopyChunkSize);
nsCString data;
while (aCount) {
nsresult rv = NS_ReadInputStreamToString(aInputStream, data, toRead);
if (NS_FAILED(rv)) {
return rv;
}
aCount -= toRead;
toRead = std::min<uint32_t>(aCount, kCopyChunkSize);
}
return NS_OK;
}
NS_IMETHODIMP
FuzzingStreamListener::OnStopRequest(nsIRequest* aRequest,
nsresult aStatusCode) {
FUZZING_LOG(("FuzzingStreamListener::OnStopRequest"));
mChannelDone = true;
return NS_OK;
}
} // namespace net
} // namespace mozilla
|