MCPcopy Create free account
hub / github.com/deskflow/deskflow / doWrite

Method doWrite

src/lib/net/SecureSocket.cpp:166–217  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

164}
165
166TCPSocket::JobResult SecureSocket::doWrite()
167{
168 using enum JobResult;
169 static bool s_retry = false;
170 static int s_retrySize = 0;
171 static int s_staticBufferSize = 0;
172 static void *s_staticBuffer = nullptr;
173
174 // write data
175 int bufferSize = 0;
176 int bytesWrote = 0;
177 int status = 0;
178
179 if (s_retry) {
180 bufferSize = s_retrySize;
181 } else {
182 bufferSize = m_outputBuffer.getSize();
183 if (bufferSize != 0) {
184 if (bufferSize > s_staticBufferSize) {
185 s_staticBuffer = realloc(s_staticBuffer, bufferSize);
186 s_staticBufferSize = bufferSize;
187 }
188 memcpy(s_staticBuffer, m_outputBuffer.peek(bufferSize), bufferSize);
189 }
190 }
191
192 if (bufferSize == 0) {
193 return Retry;
194 }
195
196 if (isSecureReady()) {
197 status = secureWrite(s_staticBuffer, bufferSize, bytesWrote);
198 if (status > 0) {
199 s_retry = false;
200 } else if (status < 0) {
201 return Break;
202 } else if (status == 0) {
203 s_retry = true;
204 s_retrySize = bufferSize;
205 return New;
206 }
207 } else {
208 return Retry;
209 }
210
211 if (bytesWrote > 0) {
212 discardWrittenData(bytesWrote);
213 return New;
214 }
215
216 return Retry;
217}
218
219int SecureSocket::secureRead(void *buffer, int size, int &read)
220{

Callers

nothing calls this directly

Calls 2

peekMethod · 0.80
getSizeMethod · 0.45

Tested by

no test coverage detected