diff --git a/lib/swift/Sources/TMultiplexedProcessor.swift b/lib/swift/Sources/TMultiplexedProcessor.swift
index 661d4a7..7f40808 100644
--- a/lib/swift/Sources/TMultiplexedProcessor.swift
+++ b/lib/swift/Sources/TMultiplexedProcessor.swift
@@ -58,7 +58,7 @@
 
   public func process(on inProtocol: TProtocol, outProtocol: TProtocol) throws {
     let message = try inProtocol.readMessageBegin()
-    guard message.1 != .call && message.1 != .oneway else { throw Error.incompatibleMessageType(message.1) }
+    guard message.1 == .call || message.1 == .oneway else { throw Error.incompatibleMessageType(message.1) }
     if let separatorIndex = message.0.firstIndex(of: Character(.multiplexSeparator)) {
       let serviceName = String(message.0.prefix(upTo: separatorIndex))
       let messageName = String(message.0.suffix(from: message.0.index(after: separatorIndex)))
diff --git a/lib/swift/Tests/ThriftTests/TMultiplexedProcessorTests.swift b/lib/swift/Tests/ThriftTests/TMultiplexedProcessorTests.swift
index 190ff13..559ff0b 100644
--- a/lib/swift/Tests/ThriftTests/TMultiplexedProcessorTests.swift
+++ b/lib/swift/Tests/ThriftTests/TMultiplexedProcessorTests.swift
@@ -54,32 +54,32 @@
     transport.reset()
   }
 
-  func testCallMessageThrowsError() throws {
-    try proto.writeMessageBegin(name: "message", type: .call, sequenceID: 1)
+  func testExceptionMessageThrowsError() throws {
+    try proto.writeMessageBegin(name: "message", type: .exception, sequenceID: 1)
     try transport.flush()
     XCTAssertThrowsError(try sut.process(on: proto, outProtocol: proto)) { error in
       guard case MultiplexedProcessor.Error.incompatibleMessageType(let type) = error else {
         XCTFail()
         return
       }
-      XCTAssertEqual(type, .call)
+      XCTAssertEqual(type, .exception)
     }
   }
 
-  func testOneWayMessageThrowsError() throws {
-    try proto.writeMessageBegin(name: "message", type: .oneway, sequenceID: 1)
+  func testReplyMessageThrowsError() throws {
+    try proto.writeMessageBegin(name: "message", type: .reply, sequenceID: 1)
     try transport.flush()
     XCTAssertThrowsError(try sut.process(on: proto, outProtocol: proto)) { error in
       guard case MultiplexedProcessor.Error.incompatibleMessageType(let type) = error else {
         XCTFail()
         return
       }
-      XCTAssertEqual(type, .oneway)
+      XCTAssertEqual(type, .reply)
     }
   }
 
   func testMissingDefaultProcessorThrowsError() throws {
-    try proto.writeMessageBegin(name: "message", type: .reply, sequenceID: 1)
+    try proto.writeMessageBegin(name: "message", type: .call, sequenceID: 1)
     try transport.flush()
     XCTAssertThrowsError(try sut.process(on: proto, outProtocol: proto)) { error in
       guard case MultiplexedProcessor.Error.missingDefaultProcessor = error else {
@@ -93,7 +93,7 @@
     let calculator = Calculator()
     let calculatorProcessor = CalculatorProcessor(service: calculator)
     sut.register(defaultProcessor: calculatorProcessor)
-    try proto.writeMessageBegin(name: "message", type: .reply, sequenceID: 1)
+    try proto.writeMessageBegin(name: "message", type: .call, sequenceID: 1)
     try transport.flush()
     try sut.process(on: proto, outProtocol: proto)
     XCTAssertTrue(calculatorProcessor.processCalled)
@@ -103,14 +103,14 @@
     let calculator = Calculator()
     let calculatorProcessor = CalculatorProcessor(service: calculator)
     sut.register(processor: calculatorProcessor, for: "Calculator")
-    try proto.writeMessageBegin(name: "Calculator:message", type: .reply, sequenceID: 1)
+    try proto.writeMessageBegin(name: "Calculator:message", type: .call, sequenceID: 1)
     try transport.flush()
     try sut.process(on: proto, outProtocol: proto)
     XCTAssertTrue(calculatorProcessor.processCalled)
   }
 
   func testMissingProcessorForMultiplexedMessageThrowsError() throws {
-    try proto.writeMessageBegin(name: "Calculator:message", type: .reply, sequenceID: 1)
+    try proto.writeMessageBegin(name: "Calculator:message", type: .call, sequenceID: 1)
     try transport.flush()
     XCTAssertThrowsError(try sut.process(on: proto, outProtocol: proto)) { error in
       guard case MultiplexedProcessor.Error.missingProcessor(let serviceName) = error else {
@@ -120,4 +120,22 @@
       XCTAssertEqual(serviceName, "Calculator")
     }
   }
+
+  func testCallMessageDoesNotThrowError() throws {
+    let calculator = Calculator()
+    let calculatorProcessor = CalculatorProcessor(service: calculator)
+    sut.register(defaultProcessor: calculatorProcessor)
+    try proto.writeMessageBegin(name: "message", type: .call, sequenceID: 1)
+    try transport.flush()
+    try sut.process(on: proto, outProtocol: proto)
+  }
+
+  func testOneWayMessageDoesNotThrowError() throws {
+    let calculator = Calculator()
+    let calculatorProcessor = CalculatorProcessor(service: calculator)
+    sut.register(defaultProcessor: calculatorProcessor)
+    try proto.writeMessageBegin(name: "message", type: .oneway, sequenceID: 1)
+    try transport.flush()
+    try sut.process(on: proto, outProtocol: proto)
+  }
 }
