summaryrefslogtreecommitdiff
authorpaule <paule>2007-07-16 09:38:45 (UTC)
committer paule <paule>2007-07-16 09:38:45 (UTC)
commit6e556a6cd6b4edf2abcf08a657c9f0b19a0fca76 (patch) (side-by-side diff)
treede3724f66caa45e5fee614c22494587657093de8
parent15fbd2a9189281ca84d89ad6a77261d0046add36 (diff)
downloadopie-6e556a6cd6b4edf2abcf08a657c9f0b19a0fca76.zip
opie-6e556a6cd6b4edf2abcf08a657c9f0b19a0fca76.tar.gz
opie-6e556a6cd6b4edf2abcf08a657c9f0b19a0fca76.tar.bz2
Commit "thanks-pfalcon-this-one-is-better.patch" as attached to bug #1854. This fixes libopieobex previously being built without being linked to libopenobex, as well as some other issues that prevented IR recieve from working.upstream
Original patch by Marek Vasut <marek.vasut@gmail.com>; improved with input from pfalcon & polyonymous.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/obex/obex.pro4
-rw-r--r--core/obex/obexserver.cpp36
2 files changed, 23 insertions, 17 deletions
diff --git a/core/obex/obex.pro b/core/obex/obex.pro
index 05118ab..2372d12 100644
--- a/core/obex/obex.pro
+++ b/core/obex/obex.pro
@@ -4,21 +4,21 @@ HEADERS = obex.h obexhandler.h obexsend.h receiver.h obeximpl.h obexbase.h obe
SOURCES = obex.cpp obexsend.cpp obexhandler.cpp receiver.cpp obeximpl.cpp obexbase.cpp obexserver.cpp
TARGET = opieobex
DESTDIR = $(OPIEDIR)/plugins/obex
INTERFACES = obexsendbase.ui
INCLUDEPATH += $(OPIEDIR)/include $(OPIEDIR)/core/launcher
DEPENDPATH +=
-LIBS += -lqpe -lopiecore2
+LIBS += -lqpe -lopiecore2 -lopenobex
VERSION = 0.0.4
include( $(OPIEDIR)/include.pro )
target.path = $$prefix/plugins/applets
#FIXME: These parameters are used if bluetooth is used
CONFTEST = $$system( echo $CONFIG_LIBOPIETOOTH )
contains( CONFTEST, y ){
HEADERS += btobex.h
SOURCES += btobex.cpp
INCLUDEPATH += $(OPIEDIR)/noncore/net/opietooth/lib
-LIBS += -lopietooth1 -lbluetooth -lopenobex
+LIBS += -lopietooth1 -lbluetooth
DEFINES += BLUETOOTH
}
diff --git a/core/obex/obexserver.cpp b/core/obex/obexserver.cpp
index f1fb205..59fcb0f 100644
--- a/core/obex/obexserver.cpp
+++ b/core/obex/obexserver.cpp
@@ -204,13 +204,25 @@ static void obex_conn_event (obex_t *handle, obex_object_t *object,
break;
case OBEX_EV_REQ:
/* Comes when a server-request has been received. */
handle_request (handle, object, event, obex_cmd);
break;
-
+ case OBEX_EV_REQDONE:
+ switch(obex_cmd) {
+ case OBEX_CMD_PUT:
+ case OBEX_CMD_CONNECT:
+ break;
+ case OBEX_CMD_DISCONNECT:
+ OBEX_TransportDisconnect(handle);
+ _exit(0);
+ break;
+ default:
+ break;
+ }
+ break;
case OBEX_EV_LINKERR:
break;
}
}
/**
@@ -420,27 +432,21 @@ bool ObexServer::start(RunMode runmode, Communication comm)
// 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 {
- int result; //Connection result
- if ( fd[ 1 ] ) {
- ::close(fd[1]);
- fd[1] = 0;
- }
- if ((result = OBEX_HandleInput(m_obex, 60)) < 0) {
- if (errno != ECONNRESET) {
- printf("OBEX_HandleInput error %d\n", errno);
- fflush(stdout);
- _exit(-1);
- }
- else
- _exit(0);
- }
+ if (OBEX_HandleInput(m_obex, 60) < 0) {
+ fprintf(stderr,"failed to OBEX_HandleInput(), errno=%d\n",errno);
+ _exit(errno?errno:-1);
+ }
} while(1);
}
char resultByte = 1;
if ( fd[ 1 ] )
write( fd[ 1 ], &resultByte, 1 );
_exit( -1 );