Add avtest support for responding to AVDTP_OPEN
diff --git a/test/avtest.c b/test/avtest.c
index 77e482a..3d36e67 100644
--- a/test/avtest.c
+++ b/test/avtest.c
@@ -133,7 +133,7 @@
printf("\n");
}
-static void process_sigchan(int sk, unsigned char reject)
+static void process_sigchan(int srv_sk, int sk, unsigned char reject)
{
unsigned char buf[672];
ssize_t len;
@@ -223,6 +223,33 @@
}
break;
+ case AVDTP_OPEN:
+ if (reject == AVDTP_OPEN) {
+ hdr->message_type = AVDTP_MSG_TYPE_REJECT;
+ buf[2] = 0x31; /* Bad State */
+ printf("Rejecting open command\n");
+ len = write(sk, buf, 3);
+ } else {
+ struct sockaddr_l2 addr;
+ socklen_t optlen;
+
+ hdr->message_type = AVDTP_MSG_TYPE_ACCEPT;
+ printf("Accepting open command\n");
+ len = write(sk, buf, 2);
+
+ memset(&addr, 0, sizeof(addr));
+ optlen = sizeof(addr);
+
+ media_sock = accept(srv_sk,
+ (struct sockaddr *) &addr,
+ &optlen);
+ if (media_sock < 0) {
+ perror("Accept failed");
+ break;
+ }
+ }
+ break;
+
default:
buf[1] = 0x00;
printf("Unknown command\n");
@@ -269,7 +296,12 @@
continue;
}
- process_sigchan(nsk, reject);
+ process_sigchan(sk, nsk, reject);
+
+ if (media_sock >= 0) {
+ close(media_sock);
+ media_sock = -1;
+ }
close(nsk);
}