summaryrefslogtreecommitdiff
path: root/core/obex/obexserver.cpp
Unidiff
Diffstat (limited to 'core/obex/obexserver.cpp') (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 );