-rw-r--r-- | src/eyefiservice.cc | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/eyefiservice.cc b/src/eyefiservice.cc index 5cbc396..fb2a90d 100644 --- a/src/eyefiservice.cc +++ b/src/eyefiservice.cc @@ -37,17 +37,17 @@ static bool detached_child() { if(!WIFEXITED(rc)) throw std::runtime_error("error in forked process"); if(WEXITSTATUS(rc)) throw std::runtime_error("forked process signalled error"); return false; } int eyefiService::StartSession( std::string macaddress,std::string cnonce, int transfermode,long transfermodetimestamp, - struct rns__StartSessionResponse &r ) { + struct rns__StartSessionResponse &r ) try { #ifndef NDEBUG syslog(LOG_DEBUG, "StartSession request from %s with cnonce=%s, transfermode=%d, transfermodetimestamp=%ld", macaddress.c_str(), cnonce.c_str(), transfermode, transfermodetimestamp ); #endif r.credential = binary_t(macaddress+cnonce+eyekinfig_t(macaddress).get_upload_key()).md5().hex(); r.snonce = session_nonce.make_nonce().hex(); @@ -63,16 +63,18 @@ int eyefiService::StartSession( putenv( gnu::autosprintf("EYEFI_TRANSFERMODETIMESTAMP=%ld",transfermodetimestamp) ); char *argv[] = { (char*)"/bin/sh", (char*)"-c", (char*)cmd.c_str(), 0 }; execv("/bin/sh",argv); syslog(LOG_ERR,"Failed to execute '%s'",cmd.c_str()); _exit(-1); } } return SOAP_OK; +}catch(std::runtime_error& e) { + syslog(LOG_ERR,"error while processing StartSession: %s",e.what()); } int eyefiService::GetPhotoStatus( std::string credential, std::string macaddress, std::string filename, long filesize, std::string filesignature, int flags, struct rns__GetPhotoStatusResponse &r ) { #ifndef NDEBUG |