Allow event notifications to work without region (#5119)

Fixes #5101
This commit is contained in:
Harshavardhana 2017-10-27 15:09:55 -07:00 committed by Dee Koder
parent b4ddccc2f7
commit 8bbfb1b714
2 changed files with 18 additions and 4 deletions

View File

@ -150,6 +150,12 @@ func (api objectAPIHandlers) PutBucketNotificationHandler(w http.ResponseWriter,
return
}
// Convert the incoming ARNs properly to the GetRegion().
for i, queueConfig := range notificationCfg.QueueConfigs {
queueConfig.QueueARN = unmarshalSqsARN(queueConfig.QueueARN).String()
notificationCfg.QueueConfigs[i] = queueConfig
}
// Put bucket notification config.
err = PutBucketNotificationConfig(bucket, &notificationCfg, objectAPI)
if err != nil {

View File

@ -116,9 +116,13 @@ func checkARN(arn, arnType string) APIErrorCode {
if len(strs) != 6 {
return ErrARNNotification
}
if serverConfig.GetRegion() != "" {
// Server region is allowed to be empty by default,
// in such a scenario ARN region is not validating
// allowing all regions.
if sregion := serverConfig.GetRegion(); sregion != "" {
region := strs[3]
if region != serverConfig.GetRegion() {
if region != sregion {
return ErrRegionNotification
}
}
@ -273,9 +277,13 @@ func unmarshalSqsARN(queueARN string) (mSqs arnSQS) {
if len(strs) != 6 {
return
}
if serverConfig.GetRegion() != "" {
// Server region is allowed to be empty by default,
// in such a scenario ARN region is not validating
// allowing all regions.
if sregion := serverConfig.GetRegion(); sregion != "" {
region := strs[3]
if region != serverConfig.GetRegion() {
if region != sregion {
return
}
}