# Buggy code
def update_available(self, conan_reference):
    """Returns 0 if the conanfiles are equal, 1 if there is an update and -1 if
    the local is newer than the remote"""
    if not conan_reference:
        return 0
    read_manifest, _ = self._client_cache.conan_manifests(conan_reference)
    if read_manifest:
        try:  # get_conan_digest can fail, not in server
            upstream_manifest = self.get_conan_digest(conan_reference)
            if upstream_manifest.file_sums != read_manifest.file_sums:
                return 1 if upstream_manifest.time > read_manifest.time else -1
        except ConanException:
            pass

    return 0


# Traceback (KeyError)
D:\slave\ws\cab\extern\boost\1.63.0@0\ws>conan.exe upload "Boost/1.63.0@cab/extern" --all --confirm -r bop --retry 3
Uploading Boost/1.63.0@cab/extern

Compressing recipe...
Uploading conanmanifest.txt


Uploading conan_export.tgz

Uploaded conan recipe 'Boost/1.63.0@cab/extern' to 'bop': http://conan.bop
Uploading package 1/5: 4f0fd3886115d238859ac2a3d41664e4236efc61

Checking package integrity...
Package integrity OK!

Compressing package...
Requesting upload permissions...
Requesting upload permissions...Done!

Uploading conan_package.tgz

Uploading package 2/5: 5d34366328ff5fe8b9f93b912e5855ffb5fda596

Checking package integrity...
Traceback (most recent call last):
File "C:\Python34\Scripts\conan-script.py", line 9, in <module>
load_entry_point('conan==0.19.2', 'console_scripts', 'conan')()
File "C:\Python34\lib\site-packages\conans\conan.py", line 6, in run
main(sys.argv[1:])
File "C:\Python34\lib\site-packages\conans\client\command.py", line 1065, in main
error = command.run(args)
File "C:\Python34\lib\site-packages\conans\client\command.py", line 979, in run
raise exc
File "C:\Python34\lib\site-packages\conans\client\command.py", line 959, in run
method(args[0][1:])
File "C:\Python34\lib\site-packages\conans\client\command.py", line 826, in upload
retry_wait=args.retry_wait)
File "C:\Python34\lib\site-packages\conans\client\manager.py", line 540, in upload
retry=retry, retry_wait=retry_wait)
File "C:\Python34\lib\site-packages\conans\client\uploader.py", line 41, in upload_conan
self._upload_conan(conan_ref, force, all_packages, retry, retry_wait)
File "C:\Python34\lib\site-packages\conans\client\uploader.py", line 56, in _upload_conan
retry, retry_wait)
File "C:\Python34\lib\site-packages\conans\client\uploader.py", line 76, in upload_package
self._remote_proxy.upload_package(package_ref, retry, retry_wait)
File "C:\Python34\lib\site-packages\conans\client\proxy.py", line 295, in upload_package
result = self._remote_manager.upload_package(package_ref, remote, retry, retry_wait)
File "C:\Python34\lib\site-packages\conans\client\remote_manager.py", line 77, in upload_package
if read_manifest.file_sums[fname] != expected_manifest.file_sums[fname]:
KeyError: 'include/boost/asio/ip/unicast.hpp'

# Fixed code
def update_available(self, conan_reference):
    """Returns 0 if the conanfiles are equal, 1 if there is an update and -1 if
    the local is newer than the remote"""
    if not conan_reference:
        return 0
    read_manifest, _ = self._client_cache.conan_manifests(conan_reference)
    if read_manifest:
        try:  # get_conan_digest can fail, not in server
            upstream_manifest = self.get_conan_digest(conan_reference)
            if upstream_manifest != read_manifest:
                return 1 if upstream_manifest.time > read_manifest.time else -1
        except ConanException:
            pass

    return 0