summaryrefslogtreecommitdiff
authorMichael Krelin <hacker@klever.net>2007-07-16 00:02:29 (UTC)
committer Michael Krelin <hacker@klever.net>2007-07-16 00:02:29 (UTC)
commit0f2f877bd115c0f50af3dabae03473515e7ff808 (patch) (side-by-side diff)
tree37d0fb83d81147a3e31fb56ff7f0d9893265f34e
parent174edcd91bcb969c4ee71a824849d8737223dd8f (diff)
downloadopie-0f2f877bd115c0f50af3dabae03473515e7ff808.zip
opie-0f2f877bd115c0f50af3dabae03473515e7ff808.tar.gz
opie-0f2f877bd115c0f50af3dabae03473515e7ff808.tar.bz2
pass erno 'upstream'
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--core/obex/obexserver.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/core/obex/obexserver.cpp b/core/obex/obexserver.cpp
index 286961f..a98c64f 100644
--- a/core/obex/obexserver.cpp
+++ b/core/obex/obexserver.cpp
@@ -413,65 +413,65 @@ bool ObexServer::start(RunMode runmode, Communication comm)
setuid( uid );
}
// The child process
if ( !commSetupDoneC() )
qWarning( "Could not finish comm setup in child!" );
setupEnvironment();
// Matthias
if ( run_mode == DontCare )
setpgid( 0, 0 );
// restore default SIGPIPE handler (Harri)
struct sigaction act;
sigemptyset( &( act.sa_mask ) );
sigaddset( &( act.sa_mask ), SIGPIPE );
act.sa_handler = SIG_DFL;
act.sa_flags = 0;
sigaction( SIGPIPE, &act, 0L );
// We set the close on exec flag.
// Closing of fd[1] indicates that the execvp succeeded!
if ( fd[ 1 ] )
fcntl( fd[ 1 ], F_SETFD, FD_CLOEXEC );
if (initObex() == 0) {
if ( fd[ 1 ] ) {
::close(fd[1]);
fd[1] = 0;
}
do {
if (OBEX_HandleInput(m_obex, 60) < 0) {
fprintf(stderr,"failed to OBEX_HandleInput(), errno=%d\n");
- _exit(1);
+ _exit(errno?errno:-1);
}
} while(1);
}
char resultByte = 1;
if ( fd[ 1 ] )
write( fd[ 1 ], &resultByte, 1 );
_exit( -1 );
}
else if ( -1 == pid_ )
{
// forking failed
runs = false;
return false;
}
else
{
if ( fd[ 1 ] )
close( fd[ 1 ] );
// the parent continues here
// Discard any data for stdin that might still be there
input_data = 0;
// Check whether client could be started.
if ( fd[ 0 ] )
for ( ;; )
{
char resultByte;
int n = ::read( fd[ 0 ], &resultByte, 1 );
if ( n == 1 )
{