<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="12" style="border: 1px #c9c399 solid; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="https://git.reviewboard.kde.org/r/123094/">https://git.reviewboard.kde.org/r/123094/</a>
     </td>
    </tr>
   </table>
   <br />




<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="12" style="border: 1px #888a85 solid; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
 <tr>
  <td>

<div>Review request for kdeconnect.</div>
<div>By Saikrishna Arcot.</div>


<p style="color: grey;"><i>Updated Sept. 7, 2015, 6:14 p.m.</i></p>









<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt;">Repository: </b>
kdeconnect-kde
</div>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
 <table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">When sending a payload, a randomly-generated UUID is sent with the payload. The payload is sent on a separate Bluetooth connection through that UUID, with the sending device acting as the server and the receiving device acting as the receiver.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">In addition, <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">core/filetransferjob.cpp</code> was edited to listen to the <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">aboutToClose()</code> signal instead of the <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">disconnected()</code> signal, which is guaranteed to exist on all implementations of <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">QIODevice</code>. I'm not sure of the side effects for the LAN device link.</p></pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing (updated)</h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">KDE to Android: Works. Tested by sending a ~1 MB file.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Android to KDE: Mostly works. The file is transferred, but the Bluetooth connection isn't closed on the Android side. This is because (at least on Android 4.1.2) the <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">write()</code> call on the output stream seems to be non-blocking, and calling <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">close()</code> on the socket immediately closes the connection, so if there happens to be data that isn't sent yet, it won't get sent and the receiving side will hang, waiting for the data.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Currently, the connection isn't closed, so all of the data goes through, but because <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">FileTransferJob</code> hasn't received a <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">closed()</code> signal, the transfer hangs, even though the file has been fully received and can be opened. Manually stopping the transfer on the KDE side works.</p></pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>core/backends/bluetooth/CMakeLists.txt <span style="color: grey">(125fa87a825b056395a8ce5ef0298665fd2e6293)</span></li>

 <li>core/backends/bluetooth/bluetoothdevicelink.h <span style="color: grey">(199d9ee4c6b89065154e82b6fcd2cea204c0ef31)</span></li>

 <li>core/backends/bluetooth/bluetoothdevicelink.cpp <span style="color: grey">(e3c1e3335a312a2b9289a7806e6a4d9c9174c73c)</span></li>

 <li>core/backends/bluetooth/bluetoothdownloadjob.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>core/backends/bluetooth/bluetoothdownloadjob.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>core/backends/bluetooth/bluetoothuploadjob.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>core/backends/bluetooth/bluetoothuploadjob.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>core/backends/devicelinereader.h <span style="color: grey">(a5255c77d95c13e5f806576bac2697fb4bc94708)</span></li>

 <li>core/filetransferjob.cpp <span style="color: grey">(66866906a6509ebb0ba00c1b48647c5807262120)</span></li>

</ul>

<p><a href="https://git.reviewboard.kde.org/r/123094/diff/" style="margin-left: 3em;">View Diff</a></p>






  </td>
 </tr>
</table>



  </div>
 </body>
</html>