summaryrefslogtreecommitdiff
authorMichael Krelin <hacker@klever.net>2007-07-15 23:55:02 (UTC)
committer Michael Krelin <hacker@klever.net>2007-07-15 23:55:02 (UTC)
commit174edcd91bcb969c4ee71a824849d8737223dd8f (patch) (unidiff)
tree912ef42f7902a1c400ed469e8abc322346765ef3
parent655a28b22bfb5cb2b8080eaf8f3c3d0ef769882e (diff)
downloadopie-174edcd91bcb969c4ee71a824849d8737223dd8f.zip
opie-174edcd91bcb969c4ee71a824849d8737223dd8f.tar.gz
opie-174edcd91bcb969c4ee71a824849d8737223dd8f.tar.bz2
unbreak error handling while preserving functionality
- exit after disconnecting - spit out error message on error - don't close fd in the loop, once is enough
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/obex/obexserver.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/core/obex/obexserver.cpp b/core/obex/obexserver.cpp
index 786e9f7..286961f 100644
--- a/core/obex/obexserver.cpp
+++ b/core/obex/obexserver.cpp
@@ -211,12 +211,13 @@ static void obex_conn_event (obex_t *handle, obex_object_t *object,
211 switch(obex_cmd) { 211 switch(obex_cmd) {
212 case OBEX_CMD_PUT: 212 case OBEX_CMD_PUT:
213 case OBEX_CMD_CONNECT: 213 case OBEX_CMD_CONNECT:
214 break; 214 break;
215 case OBEX_CMD_DISCONNECT: 215 case OBEX_CMD_DISCONNECT:
216 OBEX_TransportDisconnect(handle); 216 OBEX_TransportDisconnect(handle);
217 _exit(0);
217 break; 218 break;
218 default: 219 default:
219 break; 220 break;
220 } 221 }
221 break; 222 break;
222 case OBEX_EV_LINKERR: 223 case OBEX_EV_LINKERR:
@@ -431,19 +432,21 @@ bool ObexServer::start(RunMode runmode, Communication comm)
431 // We set the close on exec flag. 432 // We set the close on exec flag.
432 // Closing of fd[1] indicates that the execvp succeeded! 433 // Closing of fd[1] indicates that the execvp succeeded!
433 if ( fd[ 1 ] ) 434 if ( fd[ 1 ] )
434 fcntl( fd[ 1 ], F_SETFD, FD_CLOEXEC ); 435 fcntl( fd[ 1 ], F_SETFD, FD_CLOEXEC );
435 436
436 if (initObex() == 0) { 437 if (initObex() == 0) {
438 if ( fd[ 1 ] ) {
439 ::close(fd[1]);
440 fd[1] = 0;
441 }
437 do { 442 do {
438 if ( fd[ 1 ] ) { 443 if (OBEX_HandleInput(m_obex, 60) < 0) {
439 ::close(fd[1]); 444 fprintf(stderr,"failed to OBEX_HandleInput(), errno=%d\n");
440 fd[1] = 0; 445 _exit(1);
441 } 446 }
442 if (OBEX_HandleInput(m_obex, 10) < 0)
443 _exit(0);
444 } while(1); 447 } while(1);
445 } 448 }
446 char resultByte = 1; 449 char resultByte = 1;
447 if ( fd[ 1 ] ) 450 if ( fd[ 1 ] )
448 write( fd[ 1 ], &resultByte, 1 ); 451 write( fd[ 1 ], &resultByte, 1 );
449 _exit( -1 ); 452 _exit( -1 );